一、异常处理

程序运行过程中出现的,导致程序无法继续运行的错误叫做异常。

Java中有多种异常,所有异常的父类是Throwable,他主要有两个子类Error和Exception。

Error一般是JVM出现问题,不用处理,也无法处理。

Exception下有多个子类,但主要分为两种。一种是RuntimeException,这种异常可以处理也可以不处理

另一种是非RuntimeException,这种异常必须处理。

常见的RuntimeException:

1、NullPointerException   (空指针异常)

2、IndexOutOfBoundsException  (数组下标越界异常)

3、NumberFormatException  (数据格式异常)

4、ClassCastException     (类型转换异常)

5、IllegalArgumentException    (非法参数异常)

6、ArithmeticException      (算数异常)

7、IllegalStateException    (非法语句异常)

这里列举两个例子:

 NullPointerException 示例:

package None6;

public class Test {
int a;
public int show() {
return 0;
}
} package None6; public class TestIt {
//仅声明test,并未创建对象
Test test;
test.show();
}

这里test仅声明并未实际指向某个对象,空指针无法调用不属于他的方法,所以在后一条代码实际调用show()方法时会报空指针异常。

IndexOutOfBoundsException 示例:

package None6;

public class TestIt {
public static void main(String[] args) {
int[] a = new int[3];
a[0] = 0;
a[1] = 1;
a[2] = 2;
a[3] = 3;
} }

这里ArrayIndexOutOfBoundsException异常是IndexOutOfBoundsException异常的子类。

需要处理的异常可用try catch来处理:

package None7;

public class math {

    public static int add(String a,String b) {
int sum = Integer.parseInt(a);
sum+=Integer.parseInt(b);
return sum;
}
} package None7; public class testit { public static void main(String[] args) {
// TODO Auto-generated method stub
System.err.println(math.add("100", "100"));
} }

例如本示例中,当add()方法中的参数为数字时不会出现异常,但当参数中出现字母之类的字符时可能会抛出异常

处理办法;

package None7;

public class math {

    public static int add(String a,String b) {
try {
int sum = Integer.parseInt(a);
sum+=Integer.parseInt(b);
return sum;
} catch (Exception e) {
// TODO: handle exception
//打印出错信息
System.err.println(e.getMessage());
}
finally{
System.err.println("结束!");
}
return 0;
}
} package None7; public class testit { public static void main(String[] args) {
// TODO Auto-generated method stub
System.err.println(math.add("100a", "100"));
} }

结果为:

二、抛出异常

上面讲了,非RuntimeException异常必须处理,而我们当时如果不知道怎处理或者暂时不想处理时可用throw向上一级一级抛出,最终会抛给虚拟机处理。

示例:

结果:

这个例子中动态加载类123时,因为123类不存在所以会报错,然后将用throw将这个错误抛出。

这个错误首先抛出给主函数入口,然后再抛出给虚拟机。

如有错误,希望大家能指正,感谢!

努力努力再努力!

Java中的异常处理与抛出的更多相关文章

  1. Java中实现异常处理的基础知识

    Java中实现异常处理的基础知识 异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况.许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象. 例如:数组越界和被0除. ...

  2. java 中的异常处理

    一. 异常的概念和Java异常体系结构  异常是程序运行过程中出现的错误.本文主要讲授的是Java语言的异常处理.Java语言的异常处理框架,     是Java语言健壮性的一个重要体现. Java把 ...

  3. 捕获Java线程池执行任务抛出的异常

    捕获Java线程池执行任务抛出的异常Java中线程执行的任务接口java.lang.Runnable 要求不抛出Checked异常, public interface Runnable { publi ...

  4. java中的异常处理机制

    java异常处理机制 1)在java语言中,通常将可能出现异常的语句放入try{}语句中,将出现错误后需要执行的语句放入到catch{}语句中,将无论是否发生异常都要执行的语句放在finally{}语 ...

  5. 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

    前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...

  6. Java中的异常处理:何时抛出异常,何时捕获异常,何时处理异常?

    Java中的异常处理:何时抛出异常,何时捕获异常? 2017-06-07 1 异常分类 Throwable对象可以分为两组: 一组是unchecked异常,异常处理机制往往不用于这组异常,包括: Er ...

  7. 深入了解 Java 中的异常处理 + 面试题

    # 深入了解 Java 中的异常处理 + 面试题 在程序开发中,异常处理也是我们经常使用到的模块,只是平常很少去深究异常模块的一些知识点.比如,try-catch 处理要遵循的原则是什么,finall ...

  8. Java中的异常处理机制《》

    异常机制已经成为判断一门编程语言是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性. Java异常机制主要依赖于try.catch.finall ...

  9. Java中的异常处理:何时抛出异常,何时捕获异常?

    今天在看hadoop源码时,想想自己最近在做的那个系统,发现很多异常处理的方式不对,还是按照传统的异常处理方式(即:采用返回值来标识程序出现的异常情况).而hadoop中很多方法的声明是有异常抛出的, ...

随机推荐

  1. redis4.0 cluster搭建

    cd /root/tools wget http://pnxcvm0bq.bkt.clouddn.com/redis-4.0.9.tar.gz tar -zxvf redis-4.0.9.tar.gz ...

  2. 通过KSoap三方插件解析WebService接口方法

    话不多说,正文如下: 1.在lib中放入ksoap2的jar包并导入 2.在xml 配置文件中加入: <!-- 访问网络的权限 --> <uses-permission androi ...

  3. Redis集群(主从模式)

    主从模型   在Redis的集群当中,每个节点(实例)都有一个身份:Master或者Slave,Master:主要负责数据写入,Slave一般提供数据读取,Master与Slave之间是一对多关系,M ...

  4. C语言: 简易图书管理系统

    这只是一个简易的图书管理系统,虽然它有千余行代码,不过终究是个简单基本的东西. 在Linux系统下,用Vim编写,如要在Windows上运行则需要一些改动,主要是一些调用系统函数的改动.如Window ...

  5. 关于display的属性:block和inline-block以及inline的区别,float相关说明

    首先是block和inline的区别,说通俗点block就是让其形成块级元素,而且其前后都会有换行符:而inline的话就是让元素设置为内联样式(对其设置的宽高都没有什么卵用,不产生效果,但是颜色效果 ...

  6. CI框架简单使用

    CodeIgniter框架 1.回忆MVC 1.1.M:模型,提供数据,保存数据 1.2.V:视图,只负责显示,表单form 1.3.C:控制器,协调模型和视图 1.4.action:动作,是控制器中 ...

  7. npm配置国内镜像资源+淘宝镜像

    将npm的注册表源设置为国内的镜像 1.国内用户,建议将npm的注册表源设置为国内的镜像,可以大幅提升安装速度 2.国内优秀npm镜像推荐及使用:http://riny.net/2014/cnpm/ ...

  8. canvas 模拟时钟

    <meta charset="utf-8"> <canvas width="1000" height="1000" id= ...

  9. Spring Boot属性文件配置文档(全部)

    This sample file is meant as a guide only. Do not copy/paste the entire content into your applicatio ...

  10. 第一次java程序设计作业

    通过JAVA语言的学习,使我对计算机语言有了更加深入的认识和理解.知道了许多JAVA语言与其他语言的区别和特性,及其在我们生活中所发挥的重要作用.最后用一句话表明在学习JAVA语言过程中的感受,那就是 ...