在程序开发中,可能存在各种错误,有些错误是可以避免的,而有些错误却是意想不到的,在Java中把这些可能发生的错误称为异常。

  Throwable类是所有异常类的超类,该类的两个直接子类是Error和Exception。其中Error及其子类用于指示合理的应用程序不应该试图捕获的严重问题,Exception及其子类给出了合理的应用程序需要捕获的异常。

处理异常:

1.使用try....catch处理异常

        try{
需要正常执行的语句
}
catch(Exception ex){
对异常进行处理的语句
}

  try和catch是进行异常处理的关键字。

  try后面的花括号里的内容是程序需要正常执行但是又可能发生异常的语句。

  catch的小括号内是程序需要处理的异常类型。

  catch的花括号内是对程序发生的异常进行处理的语句。

2.使用try...catch...finally处理异常

     try{
需要正常执行的语句
}
catch(Exception ex){
对异常进行处理的语句
}
finally{
一定会被处理的语句
}

  try和catch是进行异常处理的关键字。

  try后面的花括号里的内容是程序需要正常执行但是又可能发生异常的语句。

  catch的小括号内是程序需要处理的异常类型。

  catch的花括号内是对程序发生的异常进行处理的语句。

  finally后的语句,不管程序是否发生异常都要执行,也就是说,程序执行完try的语句或者执行完catch语句都要执行finally语句,因此finally语句块通常用于执行垃圾回收、释放资源等操作。

3.使用try...finally处理异常

     try{
需要正常执行的语句
}
finally{
一定会被处理的语句
}

  try和finally是进行异常处理的关键字。

  try和finally之间的两个大括号内是程序需要正常执行但又可能发生异常的语句。

  finally后两个大括号内的语句是不管程序是否发生异常最终都要执行的语句。因此finally语句块通常用于放置程序中必须执行的代码。

抛出异常:

对于程序中发生的异常,除了可以使用try...catch语句块处理之外,还可以使用throws声明throw语句抛出异常。

格式如下:

    public static double Test() throws Exception{}

下面举个栗子:

public static void main(String[] args) throws Exception {
System.out.println("请输入一个数字");
int s = 0;
try{
Scanner sc = new Scanner(System.in);
String i = sc.nextLine();
s = Integer.parseInt(i);
}
catch(Exception e){
System.out.println(e.getMessage());
Exception ex = new Exception();
throw new Exception(ex);
}
double a =0;
try{
a = 100/s;
System.out.println(a);
}
catch(Exception e){
System.out.println(e.getMessage());
} }

输出为:

请输入一个数字
asdasd
For input string: "asdasd"
Exception in thread "main" java.lang.Exception: java.lang.Exception
at com.yichang.Test.main(Test.java:43)
Caused by: java.lang.Exception
at com.yichang.Test.main(Test.java:42)

带有throws Exception的方法:
  1.里面的异常可以免去try...catch
  2.调这个方法的代码,必须要被try...catch(当然也可以再抛出)。

再来个例子:

public static double Test() throws Exception{
System.out.println("请输入一个数");
double a =0;
try{
Scanner sc = new Scanner(System.in);
String i = sc.nextLine();
int s =Integer.parseInt(i);
a =100/s;
}
catch(Exception e){
throw new MyException();
}
return a;
}
public static void main(String[] args) throws Exception{ try {
double d = Test();
System.out.println(d);
} catch (MyException e) {
// TODO 自动生成的 catch 块
System.out.println(e.get()); } }
public class MyException extends Exception {
public String get(){
return "hahahahahhahahaha";
}
}

输出错误时为:

请输入一个数
asdasd
hahahahahhahahaha

Java异常内容总结的更多相关文章

  1. Java异常之自定义异常

    哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...

  2. Java 异常讲解(转)

    六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?   1 OutputStreamWrite ...

  3. Java异常(一) Java异常简介及其架构

    概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...

  4. 一篇不错的讲解Java异常的文章(转载)

    http://www.blogjava.net/freeman1984/archive/2007/09/27/148850.html 六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已 ...

  5. Java异常处理中finally中的return会覆盖catch语句中的return语句

    Java异常处理中finally中的return会覆盖catch语句中的return语句和throw语句,所以Java不建议在finally中使用return语句 此外 finally中的throw语 ...

  6. Java异常的深入研究与分析

    前言 本文是异常内容的集大成者,力求全面,深入的异常知识研究与分析.本文由金丝燕网独家撰写,参考众多网上资源,经过内容辨别取舍,文字格式校验等步骤编辑而成,以飨读者.对于本文的内容,建议小白需要多多思 ...

  7. 全面理解Java异常的运行机制

    1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话. ...

  8. Java异常之try,catch,finally,throw,throws

    Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...

  9. 两张图解读Java异常与断言

    两张图解读Java异常与断言                                 --转载请注明出处:coder-pig 本节引言: 前天公布的"七张图解析Java多线程&quo ...

随机推荐

  1. 毕业论文中使用的技术—FileReader接口

    用来把文件读入内存,并且读取文件中的数据. FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据 FileReader接口的方法 方法名 参 ...

  2. ip二进制计算,与运算算网段

    每8位二进制,各位从左到右对应的权值分别是 128,64,32,16, 8,4,2,1 .(即2的n-1次方,n是从右到左当前位的位数)  所以随便拿一个256以内的数给你化为二进制,都可以分解为权值 ...

  3. iOS之转场动画

    CodeApp地址CATransition_Demo:https://github.com/Wheat-Qin/CATransition_Demo iOS中比较全的翻转过渡动画(不只是苹果提供的).包 ...

  4. java中注解的使用与实例 (二)

    java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...

  5. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  6. Javascript 面向对象编程(一):封装

    Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果 ...

  7. db2循环

    db2普通循环结构 while循环 while 条件 do 循环体 end while; LOOP循环 SET V_INDEX = 0; AUTHLOOP: LOOP V_INDEXV_INDEX = ...

  8. C++ Primer Plus 第六版笔记

    C++ Primer Plus 第六版笔记 关于对象声明的思考 转自:http://www.cnblogs.com/weiqubo/archive/2009/11/02/1930042.html C+ ...

  9. jquery基本

    对于jquery属性的访问: //对于bool值的属性,元素标签中如果写了这个属性,attr能够获取到,如果没有写,就获取不到. 如:<input type="checkbox&quo ...

  10. debian下Apache和tomcat整合(使用apt工具)

    最近部署web系统,需要使用tomcat处理和Apache整合使用,tomcat处理JSP,Apache处理静态资源.开始不知道怎么操作,在网上查阅资料走了很多弯路.完成时候,发现其实很简单,现将配置 ...