java异常的一些小知识
来源:互联网 发布:ubuntu 挂载命令 编辑:程序博客网 时间:2024/05/16 10:56
异常,我们软件都需要面对的一个问题。如何让你的软件更加健壮呢?这是一个值得我们考虑的问题。这里主要为大家介绍一下异常是什么,异常是如何产生的,如何将异常抛出,如何捕获异常,对于异常应该如何处理的个人一些见解。
异常是什么
单就异常这两个字来说,异常的意思是:1.非正常的;不同于平常的异常现象。在我们代码中,异常指的是,在程序运行时,出现一些不正常的情况,使我们的程序无法正常运行或者对操作系统造成影响,使我们的程序无法得到预期的结果。这就是异常。这里需要说的是,我们的异常,指的是程序在运行时出现的一些问题,比如说你写了一个除法运算,用户将除数设置为了0,那么系统就会抛出异常。
异常是如何产生的
异常产生的原因有很多,比如:除数为零,数组下标越界,读取的文件不存在等,字符类型做运算处理等,这里有很多都是逻辑上的异常。可能是用户输入了一些不合法的数据,但是没有相应的检查机制,于是进行了一些不正常的操作,导致产生了异常。
异常出现后,程序可以生成一个异常类型的对象,这是系统生成的异常,这就是异常的生成。异常生成后会将异常交给java的运行系统,这是异常的抛出,具体实现下文会有介绍。现在先跟大家分享下编程人员如何自己从代码里生成异常吧,异常生成代码如下:
//生成异常的方法void m(int i ) throws ArithmeticException{if (i==0){//生成异常的代码throw new ArithmeticException ("被除数为零");}
}这里的这个方法,当你调用的时候,如果将i传入0 ,那么,就会生成一个异常,并且返回给调用它的类。
异常如何抛出
//抛异常的类,这里的主函数调用f类,然后通过f类调用m类,这时,m类将异常抛给f类,然后f类将异常接着抛给了主函数。void f(int i) throws ArithmeticException{//调用m类m(i);}//生成异常的方法void m(int i ) throws ArithmeticException{if (i==0){//生成异常的代码throw new ArithmeticException ("被除数为零");}}在这里,我们的f类调用了可以生成异常的m类,但是它并没有将m类抛给它的异常解决,而是通过 throws ArithmeticExeption 这个方法,将异常再次抛出,抛给了调用它的类。
如果调用它的类还是不想或者是不能解决该异常,可以继续用同样的方法将异常抛出。
如何捕获异常
异常如何被捕获呢?先向大家展示一段代码:public class TestEx{public static void main (String[] args){int[] arr = {1,2,3};System.out.println(arr[2]);//异常的处理机制try {//有可能出问题的代码System.out.println(2/0);}//捕捉异常catch (ArithmeticException ae){//返回信息,如果出异常后会执行这块的内容System.out.println("系统出异常了,请联系管理员");ae.printStackTrace();}}}
在这里,我们的软件在运行时,自动生成了一个除数为0 的异常,我们在有可能发生异常的地方写一个try {}catch{}然后将有可能出现异常的代码写入try的括号中,将异常出现后的处理方法写入catch的括号中,如果出现异常的话,程序就可以按照设计人员的想法将异常处理,这样的话,可能就不会再将系统中断,这是异常的好处。
下面是我们之前说的那个抛出的异常的捕获和处理:感兴趣的小伙伴可以看一下。
public class TestEx{public static void main (String[] args){try {new TestEx().f(0);}catch (ArithmeticException ae){ae.printStackTrace();System.out.println("这是一个抛出了的异常!");}}
异常处理
软件出异常是很正常的事,如何将异常捕获并处理这是需要我们考虑的,不是所有异常都是需要用户知情,需要用户知情的也不一定所有异常都要终止软件运行。如何 让软件更加的健壮、人性化。这是设计人员需要考虑的。
我们可以用多个catch语句去捕捉异常,对于不同的异常提供不同的解决方案,但是需要注意的是:如果异常类有继承关系的话,要将父类型的catch块放到子类型的catch块之后,这样才能保证后续的catch块可能被执行,否则子类型的catch块将永远无法到达,Java编译器会报错。
0 0
- java异常的一些小知识
- java的一些小知识
- Java 的一些小知识
- java异常小知识
- Java知识:异常的一些看法
- 关于Java编程的一些小知识
- java中常用到的一些小知识
- 关于JAVA的一些小知识
- java接口的一些小知识
- Java异常捕获小知识
- Java 中的一些小知识
- 关于异常的一些知识
- JAVA中容易混淆的一些小知识
- java的一些小知识(不断补充中..)
- 黑马程序员:java中集合的一些小知识
- JAVA线程相关的一些小知识,Thread
- [Thinking in JAVA] 前N章的一些小知识
- JAVA date类型处理的一些小知识
- 1.3 Hello World
- #第二周1004结题报告#
- 循环赛日程表 分治法
- java中的数据类型
- 1.2 iOS平台开发限制和方式
- java异常的一些小知识
- adb 通信协议分析以及实现 (四) ADB shell 命令分析
- 1.1 iOS概述和架构
- mysql之索引(基本概念)
- CF_459B_PashmakAndFlowers
- 2、嵌入式开发之centos6.6配置nfs服务器
- 【VR】Leap Motion 官网文档 ConfidenceTransparency (确定性透明处理)
- 经典博客网址
- jQuery操作checkBox(多选框)