10.20周五总结(课后作业)

发布时间 2023-10-20 13:00:42作者: 许七安gyg
package ExceptSourceCode;

public class EmbededFinally {

    
	public static void main(String args[]) {
        
		int result;
        
		try {
            
			System.out.println("in Level 1");

           
		 	try {
                
				System.out.println("in Level 2");
  // result=100/0;  //Level 2
               
 				try {
                   
				 	System.out.println("in Level 3");
                      
				 	result=100/0;  //Level 3
                
				} 
                
				catch (Exception e) {
                    
					System.out.println("Level 3:" + e.getClass().toString());
                
				}
                
                
				finally {
                    
					System.out.println("In Level 3 finally");
                
				}
                
               
				// result=100/0;  //Level 2

            
				}
            
			catch (Exception e) {
               
			 	System.out.println("Level 2:" + e.getClass().toString());
           
		 	}
		 	finally {
                
				System.out.println("In Level 2 finally");
           
			 }
             
			// result = 100 / 0;  //level 1
        
		} 
        
		catch (Exception e) {
            
			System.out.println("Level 1:" + e.getClass().toString());
        
		}
        
		finally {
           
		 	System.out.println("In Level 1 finally");
        
		}
    
	}

}

第三个try-catch-finally块没有正确关闭。可以尝试执行result=100/0;这行代码后没有用花括号({})正确关闭这个块,导致你的第二个catch块和finally块在语法上是不正确的。

应该在尝试执行result=100/0;这行代码后添加花括号,并确保每个try-catch-finally块的代码都在正确的作用域内。

好的,我将代码示例插入到之前的总结内容中,并达到了约1500字,具体内容如下:

JAVA项目中异常处理的重要性

在JAVA项目开发中,异常处理是非常重要的一个环节。由于各种不可预测的因素,在程序运行过程中随时可能会发生ArrayIndexOutOfBoundsException、NullPointerException、IOException等各种异常情况。如果不对可能出现的异常进行处理,一旦exceptions出现,就会导致程序非正常终止。这不仅会造成程序流程的中断,也可能会导致数据丢失或系统崩溃。所以JAVA语言中提供了异常处理机制,通过在代码中设置try-catch-finally等异常处理块来捕获可能发生的异常情况,使得程序在异常发生时可以恢复正常执行流程。合理有效的异常处理,可以避免程序异常终止造成的严重后果,极大地提高JAVA程序的健壮性和容错性,是JAVA项目开发中的必备技能。

常见的异常类型

在JAVA项目开发中,可能遇到的异常情况有很多种,常见的异常可以分为以下几类:

  1. 程序级异常:是程序本身可以避免的异常。如代码逻辑错误导致的NullPointerException、代码数组访问越界导致的ArrayIndexOutOfBoundsException等。对这类异常,需要在开发阶段就杜绝其出现。
public class ArrayIndexDemo {
  public static void main(String[] args) {
    int[] arr = {1, 2, 3}; 
    System.out.println(arr[3]); // 数组索引越界
  }
}
  1. 系统级异常:因为系统资源等外在因素导致的异常。如磁盘空间不足IOException、网络连接失败等。对这类异常我们可以通过恢复机制来处理。

  2. 业务级异常:由业务流程或业务规则导致的异常。如用户输入了非法参数导致的异常,可以通过参数校验来预防。

  3. 第三方引起的异常:使用第三方库时,第三方库抛出的异常。需要通过捕获这些异常来防止系统崩溃。

  4. 容错型异常设计的异常:有时我们也会刻意通过抛出异常的方式来实现容错,这属于一种设计方式。

以上这些异常情况在JAVA项目中很常见,要针对可能出现的异常情况进行处理,使程序能够正常运行。

异常的处理方式

JAVA提供了异常处理的语法结构来对异常进行处理。主要有两种方式:

  1. try-catch-finally块:在可能出错的代码块中使用try关键字包围,在对应的catch块中捕获异常进行处理,finally块确保关键的资源释放等操作。
public class HandleException {

  public static void main(String[] args) { 
    BufferedReader br = null;
    try {
      br = new BufferedReader(new FileReader("file.txt")); 
      // 读取文件内容
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if(br != null) {
        try {
          br.close(); //在finally中确保资源关闭  
        } catch(IOException e) {
          e.printStackTrace(); 
        }
      }
    }
  }
}
  1. throws声明:在方法签名中使用throws关键字声明该方法可能抛出的异常类型,调用方法的地方需处理这些异常。
public class ThrowsDemo {

  public void readFile(String file) throws IOException {
    // 代码实现
  }
    
  public static void main(String[] args) {
    ThrowsDemo td = new ThrowsDemo();
    try {
      td.readFile("file.txt"); 
    } catch (IOException e) {
      // 处理readFile抛出的IO异常
    }
  }
}

以上代码示例演示了JAVA异常处理中的常见用法,包括try-catch-finally、资源释放和throws声明异常等,可以更直观地展示JAVA异常处理的方式。在项目中要灵活运用它们,使异常处理更加恰当有效。

异常处理的最佳实践

为了使JAVA项目中的异常处理更加可靠和健壮,异常处理过程中需要注意以下最佳实践:

  1. 尽可能捕获具体的异常类型,不要简单使用Exception来捕获所有的异常。

  2. 对每种具体的异常类型都提供自定义的处理逻辑。

  3. 合理使用finally块来确保资源正确释放。

  4. 不要过度使用try-catch,该让异常自然传播的还是让异常传播。

  5. 使用throws来声明可能的异常类型,不要使用宽泛的throws Exception。

  6. 方法内部出现异常要让方法将其抛出,而不是简单地在方法内部将其捕获。

  7. 避免空的catch块,至少输出异常信息进行日志记录。

  8. 不要在catch块中仅打印printStackTrace(),要提供对用户更友好的异常提示。

通过在JAVA项目中使用正确的异常处理方式和遵循最佳实践,可以大大提高系统的健壮性和容错能力,使其能够从异常中恢复并继续正常运行。