java中的异常处理

来源:互联网 发布:ai制图软件 编辑:程序博客网 时间:2024/06/03 10:37
异常
1、Throwable 是Error和Exception父类。
Error错误(程序崩溃):
1、虚拟机错误(VirtualMachineError)
2、线程死锁(ThreadDeath)
3、等...
Exception错误:
1、编码、环境、用户操作输入出现问题
2、Exception有很多子类分为两种RuntimeException(非检查异常)和检查异常
一、try-catch(多catch块)-finally<br>
(1)try块:负责捕获异常,一旦try中发现异常,程序的控制权将被移交给catch块中的异常处理程序。【try语句块不可以独立存在,必须与 catch 或者 finally 块同存】<br>
(2)catch块:如何处理?比如发出警告:提示、检查配置、网络连接,记录错误等。执行完catch块之后程序跳出catch块,继续执行后面的代码。<br>
·编写catch块的注意事项:多个catch块处理的异常类,要按照先catch子类后catch父类的处理方式,因为会【就近处理】异常(由上自下)。<br>

(3)finally:最终执行的代码,用于关闭和释放资源等

try{

//一些抛出异常的方法

}

catch(Exception e){

//处理该异常的代码块

}

try{
System.out.print("请输入你的年龄");
Scanner input=new Scanner(System.in);
int age=input.nextInt();
System.out.println("十年后你"+(age+10)+"岁");
}
catch(inputmisException e){
System.out.println("你应该输入整数");
}
System.out.print();


try抛出很多种类的异常

try{

//一些抛出异常的方法

}

catch(Exception e){

//处理该异常的代码块

}

catch(Exception2 e){

//

}

Scanner input=new Scanner(System.in);
try{
System.out.print("请输入第一个数");
int one=input.nextInt();
System.out.print("请输入第二个数");
int two=input.nextInt();
System.out.println("两数相除的结果为"+one/two);
}
catch(inputmisException e){
System.out.println("你应该输入整数");
}
catch (ArithException e){
System.out.println("除数不能为0");
}

catch(Exception e){
System.out.println("我是不知名异常");
}
System.out.println("程序结束啦");

try{

//一些抛出异常的方法

}

catch(Exception e){

//处理该异常的代码块

}

catch(Exception2 e){

//

}

finally{

//最终要执行的一些代码

}

定义自己的异常

//异常类

public class CreditCardException extends Exception {

public CreditCardException(String s){
super(s);  //
 调用父类的Exception构造函数
}
public static void check(int i)
throws
CreditCardException{
if(i<0){
throw new CreditCardException("credit card="+i);
}
}
}

//检验类

public class CheckCreditCard {


public static void main(String[] args) {
// TODO Auto-generated method stub
try{
CreditCardException.check(-9);
}
catch(CreditCardException e){
e.printStackTrace();
System.out.println("抛出异常");
return;
}
System.out.println("done.");
}
}

异常有两类——检验异常(Exception类的子类)     和   非检验异常(RuntimeException 类的子类),

finally 语句一般在catch 块的结尾执行,try 或 catch 语句中的return 句子不能阻止finally 语句的执行

1 0
原创粉丝点击