之前在编程中编译完成后,运行时,会遇见一些常见的错误,如NullPointerException,ArrayIndexOutOfBoundsException等等

在今天重新回顾学习了java异常,总结了一些异常的学习,和大家一起分享一下!!!

java中异常处理是通过:try、catch、finally、throw和throws这5个关键词来实现的

简单介绍一下:try、catch、finally 3个关键词,java处理异常中,把可能出现的异常代码放入到try块中,由catch来进行捕获异常,而将必须输出的信息,放到的final语句中,因为是否发生异常final中的语句都会输出,除非在catch中使用System.exit(1)。 注:执行System.exit(1),将推出jvm虚拟机

好的,介绍了一下try、catch、finally 3个关键词,接下来说一下throw和throws!!

声明异常——throws

java中通过关键词throws声明某个方法可能抛出的各种异常类,可以同时声明多个异常类,但需用逗号隔开。

有两种方式进行处理throws:

1.使用try-catch捕获异常

2.使用throws继续声明,如果调用者不打算处理此异常,可以继续通过throws声明异常,让上一级调用者处理异常。main()方法声明的异常将由Java虚拟机来处理

下面通过两个小Demo给大家看一下:

处理方式throws1:

import java.util.Scanner;

public class DemoOneTest {
/**
* 通过try—catch捕获并处理异常
* @param args
*/
public static void main(String[] args){
try {
divide();
} catch (Exception e) {
System.err.println("error:被除数和除数不能为零!!!");;
e.printStackTrace();
}
} /**
* throws进行异常的声名
* @throws Exception
*/
public static void divide() throws Exception{
Scanner input = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = input.nextInt();
System.out.println("请输入除数:");
int num2 = input.nextInt();
System.out.println(num1/num2);
} } 输出结果:错误

输出结果:正确


处理方式throws2:
import java.util.Scanner;

public class DemoOneTest {

    /**
* 通过throws继续声明异常
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
divide();
} /**
* throws进行异常的声名
* @throws Exception
*/
public static void divide() throws Exception{
Scanner input = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = input.nextInt();
System.out.println("请输入除数:");
int num2 = input.nextInt();
System.out.println(num1/num2);
}
} 输出结果:正确

输出结果:错误


抛出异常——throw

java中也可以使用throw关键词,来进行自行抛出异常,来处理系统无法自动发现并解决的问题,将它由调用者来进行决解

Demo

Me.class

/**
* 使用throw在方法内抛出异常
*/
public class Me {
private int age = 0; /**
* 设置年龄
* @param age
*/
public void setAge(int age) throws Exception {
if (age >= 0 && age <= 100) {
this.age = age;
}else{
throw new Exception("年龄必须在1到100之间");
}
} public int getAge(){
this.age = age;
return age;
} /**
* 信息
*/
public void print(){
System.out.println("年龄为:"+this.age);
}
} DemoTwoTest.class
/**
* 捕获throw抛出的异常
*/
public class DemoTwoTest {
public static void main(String[] args) {
Me me = new Me();
try {
me.setAge(99);
} catch (Exception e) {
e.printStackTrace();
}
me.print();
}
} 输出结果:正确
me.setAge(99);

输入结果:错误
me.setAge(101);

以上是throw和throws的使用和示例代码,接下来说一下throw和throws的区别:

1.作用不同:throw用于在程序中抛出异常

throws用于声明在该方法内抛出了异常

2.使用位置不同:throw位于方法体内部,用于单独语句使用

throws需要跟在方法参数列表后面,不能单独使用

3.内容不同:throw抛出一个异常对象,且只能有一个

throws后面跟异常类,且可以跟多个异常类

异常的分类:

Throwable类:所有异常类型都是Throwable类的子类,它有两个派生类,分别是Error和Exception

Error类:表示仅靠程序本身无法恢复的严重错误,如内存溢出、虚拟机错误。应用程序不应该抛出这种类型的对象(一般由虚拟机抛出)

Exception类:由java应用程序抛出和处理的非重要错误,如数组下标越界、类型转换等。它的不同的子类分别对应不用类型的异样

java异常和throw和throws的区别的更多相关文章

  1. java异常中throw和throws的区别

    throws和throwthrows:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁.  用在方法声明后面,跟的是异常类名  可以跟多个异常类名,用逗号隔开  表 ...

  2. Java中的throw和throws的区别

    Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...

  3. Java的异常处理throw和throws的区别

    区别一:              throw 是语句抛出一个异常:throws 是方法抛出一个异常:              throw语法:throw <异常对象>          ...

  4. Java中关键字throw和throws的区别

    ==========================================题外话===================================================== 今 ...

  5. java中的throw与throws的区别

    什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...

  6. java异常处理的throw和throws的区别

    1. 区别 throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是指抛出的一个具体的异常类型. 2.分别介绍 ...

  7. JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别

    JAVA之旅(十)--异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别 不知不觉,JAVA之旅这个系列已经更新到第十篇了,感觉如梦如幻,时间 ...

  8. Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

    如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型. 从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是 ...

  9. Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)

    Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)

随机推荐

  1. Memcache工作原理

    1       Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的 ...

  2. appium自动化的工作原理(1)

    用appium开发移动端自动化测试脚本这么长时间,还没有认证的了解下它的原理是什么,到底是如何实现的呢? 1.先看一个Appium加载的过程图解(来自:了解appium自动化的工作原理--https: ...

  3. c++与c语言的区别部分

    1.new       <malloc> delete    <free> 2.多态: 重载 <函数     操作符>   类似于c中的变化参数 虚函数 3.模板 ...

  4. 二:MySQL的操作

    1:创建数据库 create database  bjpowernode ; 2:使用数据库 use bjpowernode; 3:导入数据库文件sql source  然后把SQL文件拖过来就可以了 ...

  5. python学习笔记(11)文件操作

    一.读文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...

  6. [LC] 300. Longest Increasing Subsequence

    Given an unsorted array of integers, find the length of longest increasing subsequence. Example: Inp ...

  7. mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid

    15/07/01 20:14:41 FATAL containermanager.AuxServices: Failed to initialize mapreduce.shuffle java.la ...

  8. c/c++ main 函数命令行参数的使用

    C程序最大的特点就是所有的程序都是用函数来装配的.main()称之为主函数,是所有程 序运行的入口.其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用 ...

  9. 良知VS野心,苹果为何要翻新手机?

    前不久,苹果在大中华区推出了iPhone和iPad换机服务,消息一经发出便引发了果粉们的狂欢,那些丢弃在抽屉里的iPhone4S们看上去终于有着落了,也更坚定了"我是果粉,我骄傲" ...

  10. 网络爬虫url跳转代码

    from bs4 import BeautifulSoup from urllib.request import urlopen import re import random base_url = ...