一、异常处理

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

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. 从头推导与实现 BP 网络

    从头推导与实现 BP 网络 回归模型 目标 学习 \(y = 2x\) 模型 单隐层.单节点的 BP 神经网络 策略 Mean Square Error 均方误差 \[ MSE = \frac{1}{ ...

  2. Exp6 信息搜集与漏洞扫描 20164303

    一.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 二.实践内容. (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测. ...

  3. java为什么要重写hashCode和equals方法?

    如果不被重写(原生)的hashCode和equals是什么样的? 不被重写(原生)的hashCode值是根据内存地址换算出来的一个值. 不被重写(原生)的equals方法是严格判断一个对象是否相等的方 ...

  4. mac电脑php+mysql+nginx+phpmyadmin环境搭建

    英文原文:http://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/ ...

  5. formdata 上传图片+进度条

    记得引入jquery //上传进度回调函数:          function progressHandlingFunction(e) {            if (e.lengthComput ...

  6. InstallShield Limited Edition for Visual Studio 使用

    首先到https://info.flexerasoftware.com/IS-EVAL-InstallShield-Limited-Edition-Visual-Studio填写信息: 完成之后跳转到 ...

  7. 数据类型(data type)

    基本数据类型(primitive data type):字符型(2个字节),布尔型(一位),byte(1个字节),short(两个字节),int(4个字节),long(8个字节),float(2个字节 ...

  8. OO第四次博客作业!

    oo第四次博客作业 一.测试与正确性论证比较 测试只是单方面片面的证明对于当前的输入程序是正确的,测试只能证明程序有错误,不能说明程序是对的. 正确性论证是程序达到预期目的的一般性陈述,是通过规范化的 ...

  9. [Linux]安装node.js

    node.js安装 安装node.js的版本控制工具nvm curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/ins ...

  10. MySQL 存储过程参数

    MySQL  存储过程参数 MySQL存储过程参数简介 在现实应用中,开发的存储过程几乎都需要参数.这些参数使存储过程更加灵活和有用. 在MySQL中,参数有三种模式:IN,OUT或INOUT. IN ...