java异常和throw和throws的区别
之前在编程中编译完成后,运行时,会遇见一些常见的错误,如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的区别的更多相关文章
- java异常中throw和throws的区别
throws和throwthrows:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁. 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表 ...
- Java中的throw和throws的区别
Java中的throw和throws的区别 1.throw关键字用于方法体内部,而throws关键字用于方法体部的方法声明部分: 2.throw用来抛出一个Throwable类型的异常,而throws ...
- Java的异常处理throw和throws的区别
区别一: throw 是语句抛出一个异常:throws 是方法抛出一个异常: throw语法:throw <异常对象> ...
- Java中关键字throw和throws的区别
==========================================题外话===================================================== 今 ...
- java中的throw与throws的区别
什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...
- java异常处理的throw和throws的区别
1. 区别 throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是指抛出的一个具体的异常类型. 2.分别介绍 ...
- JAVA之旅(十)——异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别
JAVA之旅(十)--异常的概述,Try-Catch,异常声明Throws,多异常处理,自定义异常,Throw和Throws的区别 不知不觉,JAVA之旅这个系列已经更新到第十篇了,感觉如梦如幻,时间 ...
- Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别
如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型. 从java异常类的结构层次可以看出,java类型的公共父类为Throwable.在程序运行中可能出现俩种问题:一种是 ...
- Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)
Java 面向对象 异常处理:RunTimeexception,try-catch,异常声明throws,自定义异常,throw和throws的区别,多异常处理(9)
随机推荐
- 在python的web框架Django中使用SQL Server
在pycharm中安装 安装pyodbc和Django——pyodbc是一个用python写的ODBC引擎 安装Django-pyodbc-azure 在后方网址中查 ...
- proxmox新版本使用了lxc容器,导致以前的vzlist命令无法使用,于是自己写了一个脚本来获取所有半虚拟化主机的信息状态
#!/usr/bin/env python #encoding:utf-8 # desc:用来描述各个主机信息 import os #CTID NPROC STATUS IP_ADDR HOSTNAM ...
- 访问Http接口的两种请求方式
1. POST方式请求 public void testPostLogin() throws Exception{ String url = "http://192.168.1.160:80 ...
- 使用内网映射工具Holer将本地的Web应用映射到公网上访问
Holer exposes local servers behind NATs and firewalls to the public internet over secure tunnels. Su ...
- java 通过数据库名获得 该数据所有的表名以及字段名、字段类型
package com.nf.lc.sql_meta_data; import java.sql.*; import java.util.HashMap; import java.util.Map; ...
- 初等数论-Base-1(筛法求素数,欧拉函数,欧几里得算法)
前言 初等数论在OI中应用的基础部分,同机房的AuSquare和zhou2003君早就写完了,一直划水偷懒的Hk-pls表示很方,这才开始了这篇博客. \(P.S.\)可能会分部分发表. Base-1 ...
- 吴裕雄--天生自然KITTEN编程:一箭穿心
- 吴裕雄--天生自然 python语言数据分析:开普勒系外行星搜索结果分析
import pandas as pd pd.DataFrame({'Yes': [50, 21], 'No': [131, 2]}) pd.DataFrame({'Bob': ['I liked i ...
- 暑假集训第六周contest1
51Nod - 1413 权势二进制 题意:就是讲给出一个数n,让你求最少由多少个像0,1,10,11......这样的二进制数相加构成:样例n=9就是由9个二进制1相加组成,我不懂比赛的时候我为什么 ...
- 2.mac下 安装go-ethereum
Contents 上代码 A.前期准备:http://m.2cto.com/kf/201612/573010.html (1)安装python2.7,mac在终端中直接使用以下命令:brew inst ...