前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java异常处理

java异常处理

作者头像
yifei_
发布2022-11-14 14:03:25
2930
发布2022-11-14 14:03:25
举报
文章被收录于专栏:yifei的专栏

  o(╯□╰)o

throwable:一切异常的超类

  • ERROR 错误
  • Exception 异常 RuntimeException:运行时异常 其他:编译时异常

try catch

代码语言:javascript
复制
package testDemo;

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

try catch finally

代码语言:javascript
复制
package testDemo;

public class test1 {
	public static void main(String[] args) {
		int a=10;
		int b=0;
		try{
			System.out.println(a/0);
		}catch(ArithmeticException e){
			e.printStackTrace();
		}finally {
			System.out.println("有异常!");
		}
	}
}

throws

代码语言:javascript
复制
package testDemo;

class test{
	int a=10;
	int b=0;
	public void show() throws ArithmeticException{
		System.out.println(a/b);
	}
}

public class test1 {
	public static void main(String[] args) {
		try {
			new test().show();
		} catch (ArithmeticException e) {
			e.printStackTrace();
		}
	}
}

throw:要抛出异常的对象

代码语言:javascript
复制
package testDemo;

class test{
	int a=10;
	int b=0;
	public void show() throws ArithmeticException{
		if(b==0){
			throw new ArithmeticException();
		}else{
			System.out.println(a/b);
		}
	}
}
public class test1 {
	public static void main(String[] args) {
		try {
			new test().show();
		} catch (ArithmeticException e) {
			e.printStackTrace();
		}
	}
}

throws 和 throw 的区别

  • throws
  • 用在方法声明后面,后面跟异常类名
  • 可以跟多个异常类名,用逗号隔开
  • 表示抛出异常,由该方法的调用者来处理
  • 只表示出现异常的可能性,并不一定会发生异常
  • throw
  • 用在方法体内,跟的是对象名
  • 只能抛出一个异常对象名
  • 表示抛出异常对象

finally

  • 一定会执行
  • 有特殊情况,finally之前有System.exit(0);
  • 用于释放资源,在IO流和数据库操作会见到。

final finally finalize()

final: 最终的意思,可以修饰类,成员变量,成员方法

代码语言:javascript
复制
修饰类,类不能被继承
修饰变量,变量是常量
修饰方法,方法不能被重写

finally: 异常处理的一部分,用于释放资源

代码语言:javascript
复制
一般来说,代码肯定会执行,特殊情况:执行finally之前jvm退出。

finalize:Object类的一个方法,用于垃圾回收

如果catch里面有return,finally是否还会执行

代码语言:javascript
复制
会,是在return之前。 但更准确的说是在中间。
代码语言:javascript
复制
package testDemo;

public class test1 {
	public static void main(String[] args) {
		System.out.println(getInt());
	}

	public static int getInt() {
		int a = 10;
		try {
			System.out.println(a / 0);
			a = 20;
		} catch (ArithmeticException e) {
			a = 30;
			return a;
		} finally {
			a = 40;
		}
		return a;
	}
}

结果是输出30,运行调试便知。

如果try里面有return,finally是否还会执行

代码语言:javascript
复制
仍然会,与在catch中类似。(如果try中没有异常发生,就不会走catch)
代码语言:javascript
复制
package testDemo;

public class test1 {
	public static void main(String[] args) {
		System.out.println(getInt());
	}
	public static int getInt() {
		int a = 10;
		try {
			a = 20;
			return a;
		} catch (ArithmeticException e) {
			a = 30;
			return a;
		} finally {
			a = 40;
		}
	}
}

结果输出20。

try catch 集中用法

代码语言:javascript
复制
A:try...catch...finally
B:try...catch
C:try...catch...catch...
D:try...catch...catch...finally
E:try...finally

自定义异常

  有时候java中的异常处理不能满足需求,需要自己自定义异常

代码语言:javascript
复制
public class MyException extends Exception {//必须继承Exception/RuntimeException
	public MyException() {
	}

	public MyException(String message) {
		super(message);//调用父类构造方法即可
	}
}

其他注意事项

  • 子类重写父类方法时,必须抛出相同异常或更具体的异常
  • 父类没有异常,子类不可以抛出异常,只能用try catch 处理

欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/ 微博:寒枫–0-0– 知乎:https://www.zhihu.com/people/tao-wu-sheng 豆瓣:YIFEI

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • throwable:一切异常的超类
  • try catch
  • try catch finally
  • throws
  • throw:要抛出异常的对象
  • throws 和 throw 的区别
  • finally
  • final finally finalize()
  • 如果catch里面有return,finally是否还会执行
  • 如果try里面有return,finally是否还会执行
  • try catch 集中用法
  • 自定义异常
  • 其他注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档