栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【java】常见异常与处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【java】常见异常与处理

文章目录
    • 1.异常体系
    • 2.Error和Exception
    • 3.异常常用的5个关键字
    • 4.运用
      • (1)try..catch...finall
        • try...catch...fianlly案例
      • (2)throw/throws
        • throw/throws案例
      • (3)自定义异常
      • (4)try...with... resource

在Java中,异常处理(exception handling) :java语言或者程序员开发提供的一种机制,当有不
正常的情况发生时,可以发出信号。
这种发出信号的过程被称为抛出异常
(throwing an exception)。

1.异常体系

2.Error和Exception
  • Error
    Error类对象由java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
    (这些错误是不可查的,因为他们在应用程序的控制和处理之外,而且是绝大多数的程序运行不允许出现的情况。

  • Exception
    -是程序本身的异常,包含运行时异常、可检查异常

  • 运行时异常(RuntimeException)
    Exception 类有一个重要的子类 RuntimeException。
    RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、
    ArithmeticException)和 Array Index Out Of Bound Exception。

  • 可检查异常
    类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,
    如果不处理,程序就不能编译通过。

3.异常常用的5个关键字
  • try
  • throw
  • throws
  • catch
  • finally
4.运用 (1)try…catch…finall
//try语句块:检查语句块是否有异常
try{
语句块
}
catch(异常类型 e){  
异常处理语句块
}
finally{
 System.out.Println("执行完毕")
}
//try语句的finally提供一种无论是否抛出异常都必须要执行的finally中代码的机制

//catch语句块:出现异常,根据异常类型进行捕获处理
//异常类型可以写具体的,也可以写Exception
//e表示异常的名字,可以用来打印异常名字 System.out.Println(e);
try…catch…fianlly案例
public class Exception1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (true) {
			try { // 测试异常
				System.out.println("请输入年龄 ");
				String s = sc.nextLine();
				int age = Integer.parseInt(s);
				System.out.println("十年后的年龄" + (age + 10));
			} catch (Exception e) { // 捕获异常 e是异常内容
				System.out.println("输入有无误");
				System.out.println("异常:" + e);

			} finally {
				System.out.println("输入结束");
			}
		}
	}
}

(2)throw/throws
  • throws:在方法上声明抛出的可检查异常
  • throw:使用throw抛出异常对象
throw/throws案例
public class Exception2 {
	public static void main(String[] args) {
		try {
			f(1);
		} catch (RuntimeException e) {
			System.out.println(e.getMessage());
		}
	}

	
	public static void f(int n) throws RuntimeException {//throws RuntimeException:抛出异常
		if (n == 1) {
			throw new RuntimeException("这是一个罕见异常,处理不了");// RuntimeException:运行时异常
		}
	} 
}

执行结果

(3)自定义异常
  • 继承异常类(Exception/RuntimeException)
public class MyExpection extends RuntimeException{
}
  • 调用父类有参构造方法
public MyExpection(String msg){
   super(msg);      //msg是异常信息
}
(4)try…with… resource

如果打开了外部资源(文件、数据库连接、网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们。
因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制.
如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用,数据库连接过多导致连接池溢出等诸多很严重的问题。

//实现了AutoCloseable接口的对象
try(InputStream in=new FileInputStream("D:/abc.txt")){
//代码块
}catch(IOException e){
//捕获异常
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/672981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号