* String类中的格式化字符串的方法:
* public static String format(String format, Object... args):使用指定的格式字符串和参数返回一个格式化字符串。
*
* 当输入内容非整数时,将出现java.util.InputMismatchException异常(输入不匹配异常)
* 当除数为零时,出现java.lang.ArithmeticException异常。(算数异常)
* 传统的解决方案:利用if进行判断来堵漏洞(麻烦)
* 异常:程序在执行过程中遇到特殊的事件,导致程序中断执行。
* java中的异常处理: try,catch,finally,throws,throw
* 1.try...catch
* try{
* //可能出现异常的代码
* }catch(异常类型 e){
* //处理异常的代码
* }
* 执行过程:当try中代码出现异常时,将会抛出一个异常对象,
* 该异常对象会和catch中异常类型进行匹配,如果匹配成功将执行catch中的代码,否则程序中断执行。
* 异常对象中常用的方法
* printStackTrace():打印异常堆栈跟踪信息(类,消息和异常跟踪信息)
* toString():异常信息(类和消息)
* getMessage():异常消息(异常消息)

public class TestException {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入被除数:");
int num1=;
int num2=;
int num3=;
try{
num1 = input.nextInt();
System.out.println("请输入除数:");
num2 = input.nextInt();
num3 = num1/num2;
}catch(Exception e){ //(InputMismatchException e)
// System.err.println("代码出错了...");
// e.printStackTrace();//打印异常堆栈跟踪信息(常用)
// System.err.println(e.toString());//toString()异常信息
System.err.println(e.getMessage());//getMessage()获取异常消息
}
String str = String.format("%d/%d=%d", num1,num2,num3);
System.out.println(str);
System.out.println("程序执行结束!");
}
}
/**
* try...catch结构:
* 语法:
* try{
* //可能出现异常的代码
* }catch(异常类型1 e){
* //处理异常类型1的代码;
* }catch(异常类型2 e){
* //处理异常类型2的代码;
* }...
* 执行过程与多重的if...else if条件分支类似,如果try中的代码发生的异常,将抛出一个异常对象,
* 该异常对象会catch中的异常类型挨个进行匹配,如果匹配成功将执行catch块中的处理代码。
* 注意:异常类型的范围应该是有小到大,否则会导致其下的catch中的代码不会执行。
*/
public class TestException3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入被除数:");
int num1=;
int num2=;
int num3=;
try{
num1 = input.nextInt();
System.out.println("请输入除数:");
num2 = input.nextInt();
num3 = num1/num2;
}catch(InputMismatchException e){
System.err.println("请输入数字!");
}catch(ArithmeticException e){
System.err.println("除数不能为零!");
}
String str = String.format("%d/%d=%d", num1,num2,num3);
System.out.println(str);
System.out.println("程序执行结束!");
}
}

* try...catch...finally
* finally中的代码不论异常是否发生,永远都会执行(除非使用System.exit()退出JVM)。
* 经常将资源释放(IO流,数据库连接等)的代码放在finally中,确保资源能得到释放
* try...catch 正确
* try....catch...finally 正确
* try....finally 正确
* catch..finally 错误

public class TryCatchFinally2 {
public static void main(String[] args) {
try{
System.out.println("try.....");
int num = /;
// return;
System.exit();//退出应用程序,退出JVM
}catch(Exception e){
System.out.println("catch....");
}finally{
System.out.println("finally....");
}
}
}

异常有哪些:

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件已结束异常:EOFException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

操作数据库异常:SQLException

输入输出异常:IOException

方法未找到异常:NoSuchMethodException

* throws和throw关键字.    (注意:声明异常后,内部没有try,catch,throw也不会报错)
* throws:在声明方法时声明该方法存在的异常。
* throw:在方法内部抛出异常。
* throws和throw的区别:
* 1.位置不同: throws在方法声明名用于声明该方法存在的异常,throw在方法内部用于抛出异常。
* 2.类型不同: throws后边跟的是异常类型,throw后边的异常对象
* 3.作用不同: throws的作用是告知方法的调用者该方法存在某种异常类型需要处理,
* throw的作用在用于抛出某种具体的异常对象。
* 经常throws和throw结合使用。

public class TestThrows {
public static int divide() throws ArithmeticException{
Scanner input = new Scanner(System.in);
System.out.println("请输出被除数:");
int num1 = input.nextInt();
System.out.println("请输出除数:");
int num2 = input.nextInt();
int num3 =;
try{
num3 =num1/num2;
}catch(ArithmeticException e){
throw new ArithmeticException();//相等于抛出一个异常对象
}
return num3;
} public static void main(String[] args) {
try{
int num3 = divide();
}catch(ArithmeticException e){
System.err.println("除数不能为零!");
}
} }

*检查异常必须进行处理,否则无法通过编译。
*常见的检查异常:
*ClassNotFoundException:类找不到异常。
*SQLException:操作SQL语句出现的异常信息
*IOException:操作IO流出现的异常信息
*....
*捕获检查异常的快捷键:1.选中出现检查异常的代码
*               2.alt+shift+z

public class TestCheckedException {
public static void main(String[] args) {
try {
Class.forName("java.lang.String");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}

自定义异常:

* 自定义异常:如果JDK中异常类型无法满足程序需要。
* 步骤:
* 1.编写自定义异常类:继承Exception或RuntimeException
* 2.编写构造方法,继承父类的实现
* 3.实例化自定义异常对象
* 4.使用throw抛出

public class AgeException extends RuntimeException{
public AgeException(String message){
super(message);
}
}
public class Agezz {
private int age;
private int score;
public int getAge() {
return age;
} public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
} public Agezz() {
super();
// TODO Auto-generated constructor stub
}
public Agezz(int age, int score) {
super();
this.age = age;
this.score = score;
}
public void setAge(int age)throws AgeException{
if(age>&&age<){
this.age=age;
}else{
throw new AgeException("不符合年龄");
}
} @Override
public String toString() {
return "Agezz [age=" + age + ", score=" + score + "]";
} }
public class Agetest {
public static void main(String[] args) {
Agezz a=new Agezz(,);
try{
a.setAge(); }catch(AgeException e){
System.out.println(e.getMessage());
}finally{
System.out.println("设置完成");
}
System.out.println(a);
}
}

java:异常机制(try,catch,finally,throw,throws,自定义异常)的更多相关文章

  1. Java异常机制关键字总结,及throws 和 throw 的区别

    在Java的异常机制中,时常出现五个关键字:try , catch , throw , throws , finally. 下面将总结各个关键字的用法,以及throw和throws的区别: (1) t ...

  2. 全面理解java异常机制

    在理想状态下,程序会按照我们预想的步骤一步一步的执行,但是即使你是大V,你也不可避免出错,所以java为我们提供了异常机制.本文将会从以下几个方面介绍java中的异常机制: 异常机制的层次结构 异常的 ...

  3. Java 异常机制

    Java 异常机制 什么是异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程 为什么要有异常 什么出错了 哪里出错了 ...

  4. 【55】java异常机制剖析

    一.为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率.虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用.有异常就说明程序存在问题,有助于我们 ...

  5. Java异常机制及异常处理建议

    1.Java异常机制 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通过API中Throwable类的众多子类 ...

  6. [Java学习笔记] Java异常机制(也许是全网最独特视角)

    Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...

  7. 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?

    本文转载自  java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...

  8. 顺平讲try catch finally throw throws(精华)

    try catch finally  有点像if else语句 还有像javascript的服务器执行成功后的回调函数,success:function(){ 进行处理 }; throws的意思是将异 ...

  9. Java基础-异常处理机制 及异常处理的五个关键字:try/catch/finally/throw /throws

    笔记: /** 异常处理机制: 抓抛模型 * 1."抛", 一旦抛出,程序终止! printStackTrace()显示异常路径! * 2."抓", 抓住异常 ...

随机推荐

  1. 解决 Jenkins 乱码以及命令不存在的问题

    方法一: Jenkins----系统管理----系统设置----全局属性----勾选环境变量 键 LANG 值 zh_CN.UTF-8 方法二(如果脚本用的是python): PYTHONIOENCO ...

  2. Spring JdbcTemplate + transactionTemplate 简单示例 (零配置)

    jdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中. JdbcTempla ...

  3. Puppet部署:安装puppet server、client

    Puppet部署:安装puppet server.client   puppet与其他手工操作工具有一个最大的区别就是 puppet的配置具有稳定性,因此你可以多次执行puppet,一旦你更新了你的配 ...

  4. 浮点数的存储、类型转换知识点(面宝P34)

    以float a=1.0f为例: (int)a实际上是以浮点数a为参数构造了一个整型数,该整数的值是1: (int&)a则是告诉编译器将a当作整数看(并没有做任何实质上的转换),即读a的内存时 ...

  5. 阿里云服务器(Linux)上打开新端口

    1.配置安全组: 2.开放防火墙规则 查看想开的端口是否已开 # firewall-cmd --query-port=8888/tcp    提示no表示未开 开永久端口号 firewall-cmd ...

  6. TTTTTTTTTTTTTTTTTTTTT POJ 3690 0与* 二维哈希 模板 +multiset

    Constellations Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5923   Accepted: 1164 De ...

  7. 【转】【Linux经验】Codeblocks 13.12自动补全 、缩进解决

    最近使用Xubuntu 14.04学习C语言编程,发现了Codeblocks这款比较方便简单.适合我这种新手的IDE.之前用过Codeblocks10.04,它的代码自动补全和自动缩进让我眼前一亮.但 ...

  8. perl基础-2

    函数参数 perl 函数参数为$$,$$$,$@ Perl 可以通过函数元型在编译期进行有限的参数类型检验. 如果你声明 sub mypush (+@)那么 mypush() 对参数的处理就同内置的 ...

  9. Java使用阿里云OSS对象存储上传图片

    原 Java使用阿里云OSS对象存储上传图片 2017年03月27日 10:47:28 陌上桑花开花 阅读数 26804更多 分类专栏: 工作案例总结 版权声明:本文为博主原创文章,遵循CC 4.0 ...

  10. 论文阅读Graph Convolutional Matrix Completion

    摘要:我们从链路预测的视角考虑推荐系统的matrix completion.像电影评分的交互数据可以表示为一个user-item的二分图,其中的edge表示观测到的评分.这种表示是特别有用的在额外的基 ...