Java异常处理机制

作者:小符
撰写时间:2018.4.24
学会了异常处理可以帮助你去掉一些在代码中不必要的麻烦,可以在发生错误时,抛出错误,让你的程序减少奔溃的几率。当发生错误时,可以在短时间内找到错误所在行,会节省很多时间,让程序更加健壮。
Java异常处理机制为:抛出异常,捕捉异常,处理异常。
语法格式:
try…catch
在使用try…catch捕获处理异常时需要注意:
**·**不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句
**·**异常捕获时,一定要先捕获小异常,再捕获大异常。否则小异常将无法被捕获
**·**避免出现庞大的try块
**·**避免使用catch(Exception e){}
**·**不要忽略异常
Exception类的常用的几种情况:
异常类Exception:
IOException有:
EOFException文件已结束异常;
FileNotFoundException文件未找到异常。
RuntimeException有:
IndexOutOfBoundsException索引越界异常;
ArrayIndexOutOfBoundsException数组索引越界异常;
ArithmeticException算数条件异常,譬如:整数除零等;
NullPointerException空指针异常;
NegativeArraySizeException数组长度为负异常;
ArrayStoreException数组存储异常,当向数组中存放非数组声明类型对象时抛出;
SecurityException违背安全原则异常;
IllegalArgumentException非法参数异常;
ClassCastException类型强制转换异常。
ReflectiveOperationException有:
ClassNotFoundException找不到类异常;
NoSuchMethodException方法未找到异常;
NoSuchFieldException找不到属性异常。
错误类Error:
一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败
等,这种错误无法恢复或不可能捕获,将导致应用程序中断。所以不应该试图使用catch块来捕捉Error和不能在throws子句中声明该方法可能抛出Error及其任何子类。
异常发生过程代码:

public class ExceptionDemo {
	public static void main(String[] args) {
		String[] strs ={"18","0"};
		intDivide(strs);
	}
	public static void intDivide(String[] strs) {
		try {
			int a = Integer.parseInt(strs[1]);
			int b = Integer.parseInt(strs[1]);
			int c = b/a;
			System.out.println("结果是:" + c);
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("数组索引越界:输入的参数个数不够");
			e.printStackTrace();
		}catch (IndexOutOfBoundsException ie) {
			System.out.println("数字格式异常:程序只能接受整数参数");
			ie.printStackTrace();
		}catch (NumberFormatException ne) {
			System.out.println("数字格式异常:程序只能接受整数参数");
			ne.printStackTrace();
		} catch (ArithmeticException ae) {
			System.out.println("算术异常");
			ae.printStackTrace();
		} catch (Exception e) {
			System.out.println("其他异常");
			e.printStackTrace();
		}
	}
}

输出结果:
在这里插入图片描述
使用方法:
printStackTrace():将此 throwable 及其追踪输出至标准错误流。
printStackTrace(PrintStream s):将此 throwable 及其追踪输出到指定的输出流。
printStackTrace(PrintWriter s):将此 throwable 及其追踪输出到指定的 PrintWriter。
完。
猜您喜欢的文章:
2018UI课程总结(UI理论篇)
什么是Java算数运算符?
令程序员泪流满面的瞬间,实在忍不住笑了
Oracle约束怎么写?
AE基础界面设置和旋转加载案例
《酒店管理系统——桑拿、沐足模块》项目研发阶段性总结
Oracle 基础知识汇总
PS快捷键
如何使用Oracle视图?
AE圆点加载动画制作过程
如何使用Collections解决多线程安全问题
如何使用System获取系统环境变量

  • 0
    点赞
  • 15
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页
评论

打赏作者

白夜光

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值