一异常处理
程序执行过程中出现异常.异常会导致程序异常终止.
异常处理是处理运行时的错误,以保持正常应用程序流的强大机制.
异常发生的几个主要原因:
●用户输入了非法数据
●要打开的文件不存在
●网络通信时连接中断,或者JVM(java虚拟机)内存溢出
异常有的是因为用户错误引起的,有的是程序错误或物理错误引起的,但是,一个写得好的程序应该处理所有可能的异常情况.
可以使用try和catch关键字来捕获异常.try/catch代码块放在异常可能发生的地方.try/catch代码块中的代码称为代码保护.
try{
//程序代码
}catch(Exceptione){
//catch代码块
}
catch语句包含要捕获异常类型的声明.当try语句块中发生一个异常,catch语句块就会被检查
Exception类型可以用来捕获所有可能的异常
下面的例子说明了,当尝试访问一个不存在的数组索引时的异常处理:
publicclassExcepTest{
publicstaticvoidmain(String[]args){
try{
inta[]=newint[2];
System.out.println(a[3]);
}catch(Exceptione){
System.out.println("Anerroroccurred");}
}
}//输出"Anerroroccurred"
没有try/catch块,这段代码会导致程序崩溃,因为a[3]不存在
catch块中的(Exceptione)语句,用于捕获所有可能的异常
二多重异常
使用throw关键字可以手动生成方法中的异常.一些可用的异常类型包括:IndexOutOfBoundsException,IllegalArgumentException,ArithmeticException,IOException等等
例如,参数为0时,我们可以在方法中抛出ArithmeticException.
intdiv(inta,intb)throwsArithmeticException{
if(b==0){
thrownewArithmeticException("DivisionbyZero");
}else{
returna/b;}
}
方法定义中的throws语句定义了方法可以抛出的Exception类型.接下来,throw关键字会引发相应的异常,并附带自定义消息.
如果b等于0,它将抛出一个ArithmeticException,并带有"DivisionbyZero"消息
●可以使用(,)分割throws语句中的多个异常类型
一个try代码块后面可以跟随多个catch代码块,这种情况就叫多重捕获,分别处理不同的异常.
try{...}
catch(异常类型1异常变量名1){...}
catch(异常类型2异常变量名2){...}
catch(异常类型3异常变量名3){...}
●所有catch块应该从最具体到最普遍的顺序排列.在特定的异常之后,最后一个catch块中的异常类型可以使用Exception类型来处理所有其他异常
三多线程编程
java是一种多线程编程语言.我们的程序可以同时运行两个或多个组件来优化可用资源,每个组件处理不同的任务.
你可以将单个应用程序中的特定操作细分为全部并发运行的单个线程.
线程是一个动态执行的过程,它也有一个从产生到死亡的过程.线图显示了一个线程完整的生命周期.
Java提供了两种创建线程的方法.
第一个创建线程的方法是创建一个新的类,该类继承Thread类,然后创建一个类的实例
classAextendsThread{
publicvoidrun(){
System.out.println("Hello");}
publicstaticvoidmain(String[]args){
Aobject=newA();
object.start();}
}
创建一个线程的第二种方法是实现Runnable接口,实现run()方法,然后创建一个Thread对象,将实现Runnable接口的类的实例作为参数传递给Thread的构造函数,并调用start()方法来启动Thread.
classLoaderimplementsRunnable{
publicvoidrun(){
System.out.println("HelloLu");}
}
classMyJavaClasss{
publicstaticvoidmain(String[]args){
Threadt=newThread(newLoader());
t.start();}
}
Thread.sleep()方法将线程暂停指定的时间段.例如Thread.sleep(1000);暂停一分钟的线程.
Thread.sleep()抛出一个InterruptedException,所以一定要用try/catch块包围它.
实现Runnable接口比从Thread类继承复杂一点,但是,实现Runnable接口是启动线程的首选方法,因为它使你可以从另一个类进行继承.
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习