关于java中异常的了解
2019-02-15 本文已影响0人
刘昱涵
异常和错误的区别
异常一般是由于逻辑方面出现问题或者条件不满足所造成的,比如分母不能为0,又或者路径导向了一个并不存在的文件,异常是可以被捕捉然后处理的
而错误更多的则是系统的错误,比如内存溢出之类的,是没有办法处理的
异常的处理办法
1、处理异常:表示这个异常就地可以解决,一般通过try...catch...语句块来解决。
使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。
还可以定义finally块,无论运行try块代码的结果如何,该块里面的代码一定运行。
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}
Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。
2、声明异常:表示这个异常在异常发生的地方无法解决,将其抛出去,并在方法定义中予以声明。
如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
下面方法的声明抛出一个 RemoteException 异常:
public class className
{
public void deposit(double amount) throws RemoteException
{
// 实现的方法
throw new RemoteException();
}
//剩余类的定义
}
5种常见异常
1、NullPointerException: 空指针异常。
public static void main(String[] args) {
String str = null;
//此处报空指针异常
System.out.println(str.length());
}
2、ClassCastException: 类型强制转换异常。
public static void main(String[] args) {
// 类型强制转换异常
Object x = new String("String");
System.out.println((Integer) x);
}
3、ArrayIndexOutOfBoundsException: 数组下标越界异常。
public static void main(String[] args) {
int arr[] = {1,2};
// 此处报数组下标越界异常
System.out.println(arr[2]);
}
4、ArithmeticException:算术运算异常。
public static void main(String[] args) {
// 整数0做了分母,报算术运算异常
System.out.println(1 / 0);
}
5、NumberFormatException: 数字格式异常。
public static void main(String[] args) {
// 将字符串“it”转换为Integer类型的,会报数字格式异常
System.out.println(Integer.parseInt("it"));
}