Java第十三次作业

Java第十三次作业,第1张

Java异常处理

认识异常

1.异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失。

Java异常强制用户去考虑程序的强健性和安全性。异常处理不应该用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应的处理。

2.异常范例

1)

package zuoye13;

class Exc {
	int i = 10;
}

public class ExceptionDemo01 {
	public static void main(String[] args) {
		Exc e = null;
		e = new Exc();
		System.out.println(e,i);
	}
}

运行结果如下:

 

2)

package zuoye13;

class Exc {
	int i = 10;
}

public class ExceptionDemo01 {
	public static void main(String[] args) {
		int a = 10;
		int b = 0;
		int temp = a/b;
		System.out.println(temp);
	}
}

运行结果如下:

 

一、捕获异常

1.异常格式:

try {
    异常语句
}catch(Exception e) {
}finally {
    一定会执行的代码
}

捕获异常:

package zuoye13;

class Exc {
	int i = 10;
}

public class ExceptionDemo01 {
	public static void main(String[] args) {
		int a = 10;
		int b = 0;
		int temp = 0;
		try {
			temp = a/b;
		} catch (ArithmeticException e) {
			System.out.println(e);
		}
		System.out.println(temp);
	}
}

运行结果如下:

 无异常将正常输出:

package zuoye13;

class Exc {
	int i = 10;
}

public class ExceptionDemo01 {
	public static void main(String[] args) {
		int a = 10;
		int b = 10;
		int temp = 0;
		try {
			temp = a/b;
		} catch (ArithmeticException e) {
			System.out.println(e);
		}
		System.out.println(temp);
	}
}

运行结果如下:

 

二、常见异常

1.数组越界异常:ArryIndexOutOfBoundsException ;

2.数字格式化异常:NumberFormatException ;

3.算数异常:ArithmeticException ;

4.空指针异常:NullPointerException 。

package zuoye13;

class Exc {
	int a = 10;
	int b = 10;
}

public class ExceptionDemo01 {
	public static void main(String[] args) {
		
		int temp = 0;
		Exc e = null;
		e = new Exc();
		temp = e.a/e.b;
		System.out.println(temp);
		System.out.println("程序输出");
	}
}

运行结果如下:

 

package zuoye13;

class Exc {
	int a = 10;
	int b = 10;
}

public class ExceptionDemo01 {
	public static void main(String[] args) {
		
		int temp = 0;
		Exc e = null;
//		e = new Exc();
		try {
			temp = e.a/e.b;
			System.out.println(temp);
		}catch(NullPointerException e2) {
			System.out.println("空指针异常:"+e2);
		}catch(ArithmeticException e2) {
			System.out.println("算数异常:"+e2);
		}
		
		System.out.println("程序输出");
	}
}

运行结果如下:

 

三、throws关键字

1、在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,抛给方法的调用者处理
2、格式:
 

public void tell() throws Exception{}

package zuoye13;

public class ExceptionDemo02 {
	public static void main(String[] args) {
		tell(10,0);
	}
	public static void tell(int i,int j) throws ArithmeticException {
		int temp = 0;
		temp = i/j;
		System.out.println(temp);
	}
}

运行结果如下:

 使用try...catch :

package zuoye13;

public class ExceptionDemo02 {
	public static void main(String[] args) {
		try {
			tell(10,0);
		}catch(Exception e) {
			System.out.println(e);
		}
	}
	public static void tell(int i,int j) throws ArithmeticException {
		int temp = 0;
		temp = i/j;
		System.out.println(temp);
	}
}

运行结果如下:

   如果方法抛出了异常,在调用该方法时,必须为捕捉的方法处理异常,当然,如果使用throws关键字将异常抛给上一级后,不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码 。

四、throw关键字

throw通常用来抛出用户自定义异常,抛出的时候直接抛出异常类的实例化对象即可。

package zuoye13;

public class ExceptionDemo03 {
	public static void main(String[] args) {
		try {
			throw new Exception("实例化异常对象");
		}catch(Exception e) {
			System.out.println(e);
		}
	}
}

运行结果如下:

 

五、自定义异常

自定义异常直接继承Exception类就可以完成自定义异常类

package zuoye13;

class MyException extends Exception {	//创建自定义异常,继承Exception类
	public MyException(String msg) { 	//构造方法
		super(msg); 				//父类构造方法
	}
}

public class ExceptionDemo04 {
	public static void main(String[] args) { // 主方法
		try { // try代码块处理可能出现异常的代码
			throw new MyException("自定义异常");
		} catch (MyException e) {
			System.out.println(e);
		}
	}
}

运行结果如下:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/731427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存