一、异常处理

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

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. sonarqube安装部署

    环境:Os:Centos 71.下载下载地址:https://www.sonarqube.org/sonarqube-7-7/我这里下载的是sonarqube-7-7sonarqube-7.7.zip ...

  2. Nodejs“实现”Dubbo Provider

    背景 目前nodejs应用越来越广泛,但和java的dubbo体系接入困难,所以我们需要实现node端的dubbo provider逻辑.java的dubbo provider是和consumer在一 ...

  3. 登录获取session

  4. Host 'xxx' is not allowed to connect to this MySQL server.

    mysql开启远程连接 今天在服务器安装了mysql,准备用mysqlguitools远程登录的时候出错,提示:Host 'xxx' is not allowed to connect to this ...

  5. (Code) Python implementation of phrase extraction from sentence

    import os import numpy as np import pandas as pd from tqdm import tqdm import numpy as np import str ...

  6. 通过nginx反向代理接收应用宝回调

    年前的时候,正好公司把用来接收应用宝回调的服务从Windows服务器上迁移带Linux服务器上,没想到最后折腾了两个工作日,腾讯的文档真的无力吐槽,不知道以后会不会有人碰到我相同的问题,我先记录一下. ...

  7. zookeeper调试命令

    转载自 https://www.cnblogs.com/andy6/p/7674028.html 一.zkServer.sh 1.查看 zkServer.sh 帮助信息[root@bigdata05 ...

  8. 线段树(segment_tree)

    线段树之——区间修改区间查询 1.概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,基本能保证每个操作的复杂度为O(lgN). 线段树是 ...

  9. 历届试题 小数第n位 (求循环节)

    只要被除数出现重复,就表明循环节出现了.即使商不是循环小数,也可以补0作为循环节,这样就可以统一处理了. AC代码 #include <stdio.h> #include <vect ...

  10. DAY 24继承与组合

    一.继承 继承就是子类与父类形成的一种关系,可以让子类能直接从父类中获取属性与方法 优点:减少了类与类之间的代码冗余 语法: class 父类: # 父类是多个有共同点的普通类抽离共有属性与方法形成的 ...