异常:Exception,程序运行过程中因为一些原因,使得程序无法运行下去
注意:在程序能够运行起来的情况,不是程序编译通不过
举例:读文件,点击一个按钮,文件不存在;访问数据库服务器,数据库服务器停电了
(1)异常的出现
由于运行中遇到预想不到的情况
(2)异常的性质
1)出现异常,程序全部终止,不运行后面的代码
2)当出现异常时,系统会将异常封装在一个类的对象中,通知系统终止(抛出异常)。
如果任由软件出现异常,软件将非常不稳定,质量很低 (3)异常如何处理?
1)用try将可能出现异常的代码包围起来
2)将出现异常之后的处理代码用catch包围起来,放在try的后面 原理:系统运行try中的代码,如果没有异常,将不会运行catch中的代码;如果出现异常,将略过try中剩余的代码,转而执行catch中的代码,catch中代码执行完毕之后,再执行软件剩余的代码 注意:
一个try后面可以接1个或多个catch,catch中的异常类型不同,捕捉不同的异常,catch中如果写
catch(Exception e)
则捕捉所有异常 还有一个finally,用在catch后面,可用可不用,最多只能用一个
finally中,保存不管是否出现异常,一定要执行的代码
举例:打开一个文件,读文件,关闭文件连接
在读文件过程中不管是否出现异常,关闭文件的工作一定要做 finally并不是可有可无的!
finally中的代码,只要整个软件还在运行,不管当前作用域是否结束,都会执行一次。如果不将代码放在finally中,就不会有这样的效果。 异常的概念
异常的出现
异常的处理
try-catch-finally
try只有1个,catch1个以上,finally最多1个 ------异常的其他应用
(1)通过异常改变程序行为
举例:输入一个数,显示该数平方。但是,如果输入格式不是数字,将反复出现输入框,直到输入正确为止。
(2)通过自定义异常来封装程序错误信息
举例:编写一个函数,输入一个年龄,0-100之间,返回年龄给主函数。否则返回“范围错误”给主函数。 一般情况下,函数中如果有throw标记,说明它可能会抛出异常。此时,函数定义上应该加上throws标记
//异常的出现:输入一个数,显示该数的平方
import javax.swing.*;
class Exception1{
public static void main(String[] args){
String str = JOptionPane.showInputDialog("输入");
int n = Integer.parseInt(str); int r = n * n;
System.out.println("结果是:" + r);
}
}
//异常的出现:输入一个数,显示该数的平方
import javax.swing.*;
class Exception1{
public static void main(String[] args){
int n=0;
try{
String str = JOptionPane.showInputDialog("输入");
n = Integer.parseInt(str);
System.out.println("asdfjsadf");
}catch(Exception e){
System.out.println("程序出现了异常");
}
int r = n * n;
System.out.println("结果是:" + r); }
}
//异常的出现:输入一个数,显示该数的平方
import javax.swing.*;
class Exception1{
public static void main(String[] args){
int n=0;
try{
String str = JOptionPane.showInputDialog("输入");
n = Integer.parseInt(str);
}catch(NumberFormatException e){
System.out.println("程序出现了数字格式转换异常");
}catch(Exception e){
System.out.println("程序出现了异常");
} int r = n * n;
System.out.println("结果是:" + r); }
}
//finally
class Exception1{
public static void main(String[] args){
try{
System.out.println("打开文件");
System.out.println("读写文件"); Integer.parseInt("a");
}catch(Exception ex){ System.out.println("出现异常"); }
finally{ System.out.println("关闭文件连接"); }
}
}
//finally
class Exception1{
public static void main(String[] args){
try{
System.out.println("打开文件");
System.out.println("读写文件"); Integer.parseInt("a");
}catch(Exception ex){ System.out.println("出现异常"); }
System.out.println("关闭文件连接");
}
}
//finally
class Exception1{
public static void main(String[] args){
try{
System.out.println("打开文件");
System.out.println("读写文件");
return;
}catch(Exception ex){}
finally{ System.out.println("关闭文件连接"); }
}
}
//(1)通过异常改变程序行为.
//举例:输入一个数,显示该数平方。但是,如果输入格式
//不是数字,将反复出现输入框,直到输入正确为止。
import javax.swing.*;
class Exception1{
public static void main(String[] args){
int n = 0;
String message = "输入";
while(true){
try{
String str = JOptionPane.showInputDialog(message);
n = Integer.parseInt(str);
break;
} catch(Exception e){
message = "重新输入";
}
}
int r = n * n;
System.out.println("结果是:" + r); }
}
//编写一个函数,输入一个年龄,0-100之间,返回年龄
//给主函数。否则返回“范围错误”给主函数。 class Exception1{
static int setAge() throws Exception{//该函数可能抛出异常
int inputAge = 2000;
if(inputAge<0||inputAge>100) {
Exception e = new Exception("范围错误");
throw e;//抛出一个实际的异常
}
return inputAge;
}
public static void main(String[] args){
//如何获得返回/抛出的内容呢?
try{
int result = setAge();
System.out.println(result);
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
JDK 中重要包的作用
包名称 内容 举例
java.lang 核心语言包,最基本的 API System、Integer、数学运算
java.awt 抽象窗口工具包,生成图形用户界面 按钮,界面
java.awt.event 事件处理包 按钮点击事件
javax.swing 更加丰富的图形用户界面生成包 带图标的按钮
java.util 工具包 随机数、日期
javax.io 输入输出包 文件读写
javax.net 网络编程支持包 网络传输
java.lang 包中的类使用,无需用 import 导入。比如,我们使用
“Systerm.out.println()”时,从来没有用“import java.lang.System”来导入 System 类
对于包来说,我们一般可以观察其树型
结构,对于类来说,我们一般观察其内容。

另外,我们还可以查看一个类的基本内容。一般情况下,我们可以在左下方窗口
选择一个类的链接,这个类的链接就显示在右方窗口。如我们选择“java.awt”包中的
“Button”类(首先在左上角的窗口中选择“java.awt”,然后在左下角窗口中选择
“Button”)

在右方窗口中,首先列出了 Button 类的继承关系以及基本用法,读者可以在里
面看到该类的成员,用如下标记标明:

构造函数,用如下标记标明:

成员函数,用如下标记标明:

以及从父类继承的成员,用如下标记标明:

java中的报错机制的更多相关文章

  1. java中JDBC报错(一)

    java中JDBC报错(一) 1.具体报错如下 com.mysql.jdbc.MySqlDataTruncation:Data truncation:Data too long for column ...

  2. JAVA中空指针异常报错的几种可能坑你的情况

    一.局部变量覆盖掉其他变量导致无法使用. 在做Java客户管理的项目的时候,eclipse报出了个空指针异常的错误,但反复检查也并没感觉出错误,调用的数组给它初始化而且赋值了,但是编译器很顽强的报了一 ...

  3. Java中 @override 报错

    报错问题: 在我们导入别人的项目的时候有可能会出现Java类报错,点击错误时提示让我们remove掉@override.这是JDK版本的问题导致的跟源码无关. 解决方法: 方案1.直接删除掉报错的@o ...

  4. maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

    主要原因是maven项目里面的jar包吗,没有导入到项目中 maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframewor ...

  5. maven项目中的报错问题——Dynamic Web Module 3.0 requires Java 1.6 or newer.

    转自:http://www.cnblogs.com/beppezhang/p/5919221.html maven项目中的报错问题——Dynamic Web Module 3.0 requires J ...

  6. java @override 全部报错

    问.java @override 全部报错 答: 错误:在 eclipse 的新工作空间开发项目时,出现大面积方法编译错误.鼠标放在方法名上后显示让我们去掉 @override 注解 原因: @Ove ...

  7. R.java 文件内报错:Underscores can only be used with source level 1.7 or greater。

    R.java 文件内报错:Underscores can only be used with source level 1.7 or greater 网上查找后得知是Android工程图片资源命名的问 ...

  8. elasticsearch之JAVA环境变量报错:could not find java; set JAVA_HOME or ensure java is in PATH

    在以RPM包安装elasticsearch过程中出现报错JAVA环境的问题: ● elasticsearch.service - Elasticsearch Loaded: loaded (/usr/ ...

  9. IE对象最后一个属性后不要加逗号,否则在IE7及以下版本中会报错

    某函数返回一个对象,如果在最后一个属性后加逗号,IE7及以下版本中会报错 正确代码: return{ top:rect.top-top, bottom:rect.bottom-top, left:re ...

随机推荐

  1. LeetCode OJ:Pascal's Triangle(帕斯卡三角)

    Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...

  2. SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://blog.csdn.net/forezp. http://blog.csdn.net/forezp/art ...

  3. 【CSAPP】二、信息的表示和处理

    三种重要的数字表示:无符号 . 补码 . 浮点数. [一]信息存储 最小单位是字节, 在操作系统层面,只需要关注地址.系统将存储器空间划分为更可管理的单元,存放不同的程序对象(程序数据.指令.控制信息 ...

  4. android代码设置EditText只输入数字、字母

     如何设置EditText,使得只能输入数字或者某些字母呢? 一.设置EditText,只输入数字: 方法1:直接生成DigitsKeyListener对象就可以了. et_1.setKeyLis ...

  5. [置顶] Kubernetes1.7新特性:新增自动伸缩条件和参数

    一.核心概念 Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能.云计算具有水平弹性的特性,这个是云计算区别于传统IT技术架构的主要 ...

  6. 请求URL中有body怎么使用jmeter进行接口测试

    业务场景: 微信内免费领取激活码 1.点击“免费领取”按钮调取的接口 2.URL如下 https://yxyapi2.drcuiyutao.com/yxy-api-gateway/api/json/v ...

  7. linux 段错误常见处理方法

    1.如果没有产生core文件,可以查询系统log 通过 sudo cat /var/log/messages |grep segfault 或者 sudo dmesg|grep segfault 获得 ...

  8. bulkcopy实现批量插入与更新

    public static void UpdateData<T>(List<T> list, string TabelName) { DataTable dt = new Da ...

  9. bzoj 3052 糖果公园

    Written with StackEdit. Description \(Candyland\) 有一座糖果公园,公园里不仅有美丽的风景.好玩的游乐项目,还有许多免费糖果的发放点,这引来了许多贪吃的 ...

  10. LOJ2823 「BalticOI 2014 Day 1」三个朋友

    题意 给定一个字符串 S,先将字符串 S 复制一次(变成双倍快乐),得到字符串 T,然后在 T 中插入一个字符,得到字符串 U. 给出字符串 U,重新构造出字符串 S. 所有字符串只包含大写英文字母. ...