JAVA 如何处理异常?

1.java将如何处理异常?

1.Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。
2.在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。
当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。
3.ava的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。

1.1Java中的异常处理机制的简单原理和应用。

  1. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。
  • 一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。
    另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。
    所有的异常都是java.lang.Thowable的子类。
  1. Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。
    在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。
    当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。
    Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。

  2. 一般情况下是用try来执行一段程序,如果出现异常,
    系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
    用try来指定一块预防所有“异常”的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的“异常”的类型。
    throw语句用来明确地抛出一个“异常”。throws用来标明一个成员函数可能抛出的各种“异常”。

  3. Finally为确保一段代码不管发生什么“异常”都被执行一段代码。
    可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,
    “异常”的框架就放到堆栈上面,直到所有的try语句都完成。
    如果下一级的try语句没有对某种“异常”进行处理,堆栈就会展开,直到遇到有处理这种“异常”的try语句。

1.1 可以用以下代码实现:

下面展示一些 Test 测试 代码片

public class Test {

public static void main(String[] args) throws InterruptedException {
	System.out.println("hello");
	int a = 10;
	int b = a/0;   // 运行时异常。 除数不能为零。
	
	int[] arrs = new int[10];
	arrs[11] = 10; // 运行时异常。 数组下标越界异常。
	
	System.out.println("正在登陆中");
	for(int i=0;i<100;i++){
		Thread.sleep(1000); // 请看main方法上的throws 删除它,你就会看见非运行时异常。需要强制处理的异常。
		System.out.println("*");
		if(i==10){
			break;
		}
		
	}
	System.out.println("登录成功");
	
}

}

2.如何处理异常

2.1 try , catch

  • try 用来定义可能出现异常的代码块。
  • catch 用来捕捉异常, 处理异常。

下面展示一些 Test 测试 代码片

	public class Test2 {

	public static void main(String[] args) {
	
	System.out.println("hello1");
	System.out.println("hello2");
	System.out.println("hello3");
	System.out.println("hello4");
	System.out.println("hello5");
	try{
		int a = 10;
		int b = a/0;
	}catch(ArithmeticException e){
		System.out.println("保险公司报销");
		
	}
	System.out.println("hello6");
	try{
		System.out.println("hello7");
		System.out.println("hello8");
		System.out.println("hello9");
		String string = null;
		System.out.println(string.charAt(2));
	}catch(NullPointerException e){
		System.out.println("第二个异常被处理掉");
		
	}
	System.out.println("hello10");
	
	
	}

	}

2.2 finally

  • finally 无论是否出现异常,都必须执行的代码块。一般用来关闭连接,释放流。

下面展示一些 Test 测试 代码片

public class Test3 {

public static void main(String[] args) {
	System.out.println("hello1");
	System.out.println("hello2");
	System.out.println("hello3");
	System.out.println("hello4");
	System.out.println("hello5");
	try{
		int a = 10;
		int b = a/0;
	}catch(ArithmeticException e){
		System.out.println("保险公司报销");
	}finally{
		System.out.println("我继续喝咖啡");
		
	}
	
	System.out.println("hello6");
	
	try{
		System.out.println("hello7");
		System.out.println("hello8");
		System.out.println("hello9");
		String string = null;
//			System.out.println(string.charAt(2));
	}catch(NullPointerException e){
		System.out.println("第二个异常被处理掉了");
	}finally{
		System.out.println("我继续喝咖啡");
		
	}
	System.out.println("hello10");
}

}

2.3 语法结构

下面展示一些 Test 测试 代码片

	public class Test4 {

public static void main(String[] args) {
	try{
		// 可能出现异常的代码块。
	}catch(Exception e){
		// Exception 或子类,处理异类。
	}finally{
		// 无论是否出现异常,都必须执行代码块。  finally不是不想存在的。
	}
	
}

}

3.面试题

3.1 面试题 一

下面展示一些 面试题一 测试 代码片

		public class Test5 {
   

	public static void main(String[] args) {
   
		// 一个catch只处理一个异常。
		// 一个try后面可以有多个catch吗? 可以。
		// 要求: 异常的父类必须写在子类之后。
		try {
   
			int a = 10/1;
			String str = null;
			System.out.println(str.charAt(0));
			System.out.println("77777777");
			int</
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西边的虫虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值