一、定义

异常(Exception) : 是指程序运行时出现的非正常情况,是特殊的运行错误对象,对应着Java语言特定的运行错误处理机制。

二、两大常见的异常类型

RuntimeException(运行时异常):主要包括“错误的类型转换”、“数组下标越界”、“数组越界”和“空指针”等,这种RuntimeException往往是由于程序的不正确导致的;

Non-RuntimeException(非运行时异常):主要包括“从一个不存在的文件中读取数据”、“越过文件结尾继续读取”、“连接一个不存在的URL”等,这种Non-RuntimeException一般是在编译器编译时产生的,通常由环境因素造成,而不是程序本身的作用导致的,例如:IOException。

三、异常处理的两种方式

①用 try......catch......(finally) 捕获异常

   try{
可能遇到的异常
} catch{
处理异常的方法
} finally{
程序输出的内容
}

(注意:①try 在程序中不能单独使用,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象;②finally语句为异常处理提供了一个统一的出口,无论在try代码块中是否发生了异常,finally块中的语句都会被执行,即finally语句无论遇到什么异常都会输出。)

②用 throws 抛出异常

  public void readFile (Srting file) throws FileNotFoundException{ }

  //格式:返回类型 + 方法名(参数列表)+ throws + 异常类型列表

四、举例说明

eg: 定义一个整型的数字69,判断它是否与ASCII码表中的字符‘T’是否相等,若不等于‘T’就继续执行代码,输出69所对应的字符。在这个判断的过程可能会出现IOException,我们就通过这个例子来比较一下异常处理的这两种方式。

①用 try......catch......(finally) 捕获异常

import java.io.IOException;

   public class ExceptionTest {
public static void read( ) {
int a = 69;
try {
while((char)a != 'T') { //判断69对应的字符是否等于‘T’,若不等则继续执行代码
System.out.println((char) a);
a = System.in.read( ); //从a中读取字符
}
}
catch(IOException e){
System.out.println("ExceptionTest");
}
} public static void main(String[] args) {
ExceptionTest.read( );
}
}
②用 throws 抛出异常

import java.io.IOException;

   public class ExceptionTest  {
public static void read( ) throws IOException {
int a = 69; while((char)a != 'T') { //判断69对应的字符是否等于‘T’,若不等则继续执行代码
System.out.println((char) a);
a = System.in.read( ); //从a中读取字符
throw new IOException(); //在方法体中,抛出异常的throw不需要加s(该异常对象可省略不写
} System.out.println("ExceptionTest");
} public static void main(String[] args) throws IOException {
ExceptionTest.read( );
}
}

Java Exception 异常处理的更多相关文章

  1. Java的异常处理

    Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally.JB的在线帮助中对这几个关键字是这样解释的:       Throws: Lists the ...

  2. java的异常处理机制(try…catch…finally)

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

  3. java的异常处理简介

    异常概述 任何一种程序设计语言设计的程序在运行时都有可能出现错误,例如除数为0,数组下标越界,要读写的文件不存在等等. 捕获错误最理想的是在编译期间,但有的错误只有在运行时才会发生. 对于这些错误,一 ...

  4. Java 六种异常处理的陋习(转)

    Java 六种异常处理的陋习 原文链接:  http://www.cnblogs.com/Android-and-android/archive/2013/05/02/3054469.html 你觉得 ...

  5. 关于JAVA中异常处理的简单阐释.

    ---恢复内容开始--- 这是我的一篇要在博客园发布的随笔,主要是简单的概括一下我本次所学的关于异常处理的知识.有讲的不妥当的地方,或者有需要补充的,还请各位高人给指点,共同学习,虚心求学.谢谢啦~ ...

  6. Java开发知识之Java的异常处理

    Java开发知识之Java的异常处理 一丶异常概述 在讲解异常之前,我们要搞清楚.什么是异常. 通俗理解就是我们编写的程序出问题了.进行处理的一种手段. 比如我们的QQ.有的时候就崩溃了.比如出现xx ...

  7. Java -- 异常的捕获及处理 -- Java的异常处理机制

    7.1.4 Java的异常处理机制 在整个Java的异常处理中,实际上也是按照面向对象的方式进行处理,处理的步骤如下: ⑴ : 一旦产生异常,则首先会产生一个异常类的实例化对象. ⑵ : 在try语句 ...

  8. JAVA之异常处理(一)

    JAVA之异常处理(一) 1.异常概述 在程序的开发过程中,可能存在各种各样的错误,有些错误是可以避免的,而有些错误却是意想不到的,在Java中把这些可能发生的错误称为异常.异常类的继承关系如下图. ...

  9. Java Exception 和Error有什么区别?

    ① Exception 和Error 都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型. ② Exception和Error ...

随机推荐

  1. mysql8报错解析

    1. 场景描述 想把测试数据导一份到本地使用,乱入装了mysql8,使用springboot项目启动的时候报: java.sql.SQLException: The server time zone ...

  2. jsp模板

    <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...

  3. 【转】ASP.NET Core 如何设置发布环境

    在ASP.NET Core中自带了一些内置对象,可以读取到当前程序处于什么样的环境当中,比如在ASP.NET Core的Startup类的Configure方法中,我们就会看到这么一段代码: publ ...

  4. 实现拖拽列表-微信小程序

    之前在网上搜索拖拽列表的实现时,发现了有好多的方法都是基于像素位置的计算实现的,这种方法要求列表元素的大小以及列表的位置有着非常严格的要求,修改和拓展起来非常的麻烦.于是我自己动手实现了一个基于页面元 ...

  5. 【LOJ#2162】【POI2011】Garbage(欧拉回路)

    [LOJ#2162][POI2011]Garbage(欧拉回路) 题面 LOJ 题解 首先有一个比较显然的结论,对于不需要修改颜色的边可以直接删掉,对于需要修改的边保留.说白点就是每条边要被访问的次数 ...

  6. Python中字符的编码与解码

    1 文本和字节序列 我们都知道字符串,就是由一些字符组成的序列构成串,那么字符又是什么呢?计算机只能识别二进制的东西,那么计算机又为什么会显示我们的汉字,或者是某个字母呢? 由于最早发明使用计算机是美 ...

  7. django接口文档自动生成

    django-rest_framework接口文档自动生成 只针对用到序列化和返序列化 一般还是用第三方yipi 一.安装依赖 pip3 install coreapi 二.设置 setting.py ...

  8. 尉蓝色的P2P金融众筹平台手机模板

    蓝色的p2p金融投资众筹网手机模板html整站下载.实用的众筹app手机模板下载.主要页面有:众筹项目.发布.个人中心.登录.注册.优惠券.回报.项目详情.我要支持.帮助中心等总共37个手机页面. 模 ...

  9. node开发基础概念

    1.以严格模式运行一个js文件 node --use_strict xxx.js 2.退出node交互模式 连续按两次Ctrl+C. 3,node.js的模块不支持ES6的export.import规 ...

  10. IP地址网段表示法

    172.12.34.0/25 子网掩码:用于表示IP地址中的多少位用来做主机号.因为"其中值为1的比特留给网络号和子网号,为0的比特留给主机号"(TCP/IP V1). 172.1 ...