异常
异常是一种特殊的对象,类型为java.lang.Exception,或其子类,是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
异常处理
Java 编程语言使用异常处理机制为程序提供了错误处理的能力
过程:
通过 try catch finally throws throw 进行异常处理
try:内放可能出现异常的代码块,并执行这些代码块
catch:捕获异常,内放处理方式
finally:无论如何,都执行的代码块,通常会把释放资源的代码放里面
public String getString(){
try{}
catch{}
finally{
return "-1";
}
//try 和catch里面就不用放return了
}
程序没有异常仅此一种方法执行不到
System.exit(21);
//整个应用程序退出
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Main main=new Main();
String str= main.Sum();
}
public String Sum(){
Scanner sc=new Scanner(System.in);
try{
int n=sc.nextInt();
}
catch(Exception e){
System.out.println("53454");
}
finally {
// return "e";
System.exit(-1);
}
}
}
throws:放在方法的头部,用来声明异常,throws 声明某个方法可能抛出的各种异常,多个异常用逗号隔开
throw:手动抛出异常
throws和throw的区别:
throws放在方法名后面,throw放在方法内部
throws声明异常类型,可以声明好几个,throw生成并抛出异常,一次只能抛出一个
try—catch的三种情况:
1.正常
2.出现异常
3.异常类型不匹配
catch中处理异常常用方法:
1.用户自定义处理,比如输出XXX
2.void printStackTrace() 输出异常堆栈信息
3.String getMessage() 返回异常信息的字符串,是printStcakTrace()的输出信息的一部分
4.Exception 异常层次结构的父类
5.ArithmeticException 算术错误情形,如以零作除数
6.ArrayIndexOutOfBoundsException 数组下标越界
7.NullPointerException 尝试访问 null 对象成员
8.ClassNotFoundException 不能加载所需的类
9.IllegalArgumentException 方法接收到非法参数
10.ClassCastException 对象强制类型转换出错
11.NumberFormatException 数字格式转换异常,如:把 "abc" 转换成数字
try—catch—finally执行顺序:
public class FinallyTest
{
public static void main(String[] args) {
System.out.println(new FinallyTest().test());;
}
static int test()
{
int x = 1;
try
{
x++;
return x;
}
finally
{
++x;
}
}
}
//在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。
//在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,
//在从中取出返回结果, 因此,即使finally中对变量x进行了改变,但是不会影响返回结果。 它应该使用栈保存返回值。
异常分为 Checked 异常和运行时异常
Checked 异常必须捕获或者声明抛出
运行时异常不要求必须捕获或者声明抛出
异常处理原则
异常只能用于非正常情况,不要将过于庞大的代码块放在 try 中
在 catch 中指定具体的异常类型
需要对捕获的异常做处理
浙公网安备 33010602011771号