java[21] 异常处理

异常处理

基本概念:

当出现程序无法控制的外部环境问题(用户提供的文件不存在、文件内容损坏、网络不可用。。。)时,java就会用异常对象来描述。

Java中用两种方法来处理异常:

  1. 在发生异常的地方直接处理。
  2. 将异常抛给调用者,让调用者处理。

异常分类

  1. 检查性异常:java.lang.Exception
  2. 运行时异常:java.lang.RuntimeException
  3. 错误:java.lang.Error

顶层是java.lang.Throwable类,检查性异常、运行时异常、错误都是这个类的子类。java.lang.Exceptionjava.lang.Error继承自java.lang.Throwable。而java.lang.RuntimeException继承java.lang.Exception

检查性异常:程序正确,但是因为外在的环境条件不满足引发。例如:用户错误及I/O问题——程序视图打开一个并不存在的远程socket端口,或者打开不存在的文件时,这并不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误),对商用软件系统,程序开发者必须考虑并处理这个问题,java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能编译。

运行期异常:这意味着程序存在bug,如数组越界,0被除,入参不满足规范。。。这类异常需要更改程序来避免,java编译器强制要求处理这些异常。

错误:一般很少见,也很难通过程序解决,它可能源于程序的bug,但是一般更可能源于环境问题,如内存耗尽。错误在程序中无需处理,而由运行环境处理。

 

示例代码:

package jihelist;
import java.io.*;
import java.net.*;
public class exception1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//检查异常1.打开一个不存在的文件
		//FileReader fr = new FileReader("d:\\aa.txt");
		//异常处理:
		
		//在出现异常的地方就会终止执行代码
		//然后进入到catch语句
		//如果有多个catch 。则进入到匹配的异常那个
		try {
			FileReader fr = new FileReader("d:\\aa.txt");
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			System.out.println(e);
			//处理
			
		} finally {
			//  这个语句块,不管有没有异常都会被执行
			//一般说,把需要关闭的文件、连接 内存等。。。。
			
		}
		System.out.println("ok___");
		
		
		
		
		//连接一个端口  
		//Socket sc = new Socket("www.baidu.com", 80);
		
		//运行异常:
		//java.lang.ArithmeticException: / by zero
		//int a = 4/0;
		
		//数组越界
		//java.lang.ArrayIndexOutOfBoundsException: 4
		//int[] arrey = {1,2,3};
		//System.out.println(arrey[4]);
		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_38125626/article/details/81188135
今日推荐