throws

java中throw与throws的区别

早过忘川 提交于 2020-01-16 05:25:40
throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。 (在别处如果调用这个方法时,就必须也抛出异常或者用try catch 处理。 throws是可以单独使用的) 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开 表示抛出异常,由该方法的调用者来处理 throws表示出现异常的一种可能性,并不一定会发生这些异常 public class Test { public static void main ( String [ ] args ) throws Exception { Test test = new Test ( ) ; /*** 调用的方法里抛出了异常,依然要调用的2种方式 * 1、抛出异常 * 2、用try catch 代码块包住 test.compute() */ test . compute ( ) ; } public void compute ( ) throws Exception { System . out . println ( "我可能发生异常" ) ; System . out . println ( "3/0的值为" + 3 / 0 ) ; } } throw:则是用来抛出一个具体的异常类型。 (如果程序执行到 throw 一个Exception ,代表异常已经发生了

throw跟throws关键字

岁酱吖の 提交于 2020-01-15 07:59:02
throws关键字 定义一个方法的时候可以使用throws关键字声明。使用throws关键字声明的方法 表示此方法不处理异常,而交给方法调用处进行处理 。 throws关键字格式: public 返回值类型 方法名称(参数列表,,,)throws 异常类{}; 假设定义一个除法,对于除法操作可能出现异常,可能不会。所以对于这种方法最好将它使用throws关键字声明,一旦出现异常, 则应该交给调用处处理。 class Math{ public int div(int i,int j) throws Exception{ // 定义除法操作,如果有异常,则交给被调用处处理 int temp = i / j ; // 计算,但是此处有可能出现异常 return temp ; } }; public class ThrowsDemo01{ public static void main(String args[]){ Math m = new Math() ; // 实例化Math类对象 try{ System.out.println("除法操作:" + m.div(10,2)) ; }catch(Exception e){ e.printStackTrace() ; // 打印异常 } } }; 因为div使用了throws关键字声明,所以调用此方法的时候,方法必须进行异常处理

Java关键字——throws和throw

亡梦爱人 提交于 2020-01-14 07:24:31
throws关键字   在定义一个方法时,可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,而交给方法的调用处进行处理。   使用了throws关键字,表示不管是否会有异常,在调用此方法处都必须进行异常处理 //================================================= // File Name : throws_demo //------------------------------------------------------------------------------ // Author : Common // 类名:Math // 属性: // 方法: class Math{ public int div(int i,int j) throws Exception{ //本方法中可以不处理异常 int temp = i/j; //此处有可能产生异常 return temp; //返回计算结果 } } //主类 //Function : throws_demo public class throws_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Math m =new Math(); //实例化Math对象 try

十二、JavaIO之(对象序列化)

空扰寡人 提交于 2020-01-13 07:33:20
一、序列化简介 对象序列化的核心意义在于将内存中的对象转换为二进制数据流的形式进行处理。 所有的对象都是在堆内存空间保存的,并且每一块堆内存空间所保存的全部都是对象拥有的属性内容,但是在很多情况下有可能需要将一个对象直接进行远程传输或者是进行文件的保存。 但是需要注意的是,并非所有的类对象都可以被序列化,在Java里面可以被序列化对象所在的类一定要实现java.io.Serializable接口。但是这个接口里面并没有任何的方法,所以与Cloneable接口样,都属于一个标记接口,用于表示-种处理的能力。 **例:**定义序列化类 class Ball implements Serializable { private String name ; private double price ; public Ball ( String name , double price ) { this . name = name ; this . price = price ; } public Ball ( ) { } public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } public double getPrice ( ) {

How to verify that all own thrown runtime exceptions are covered in Javadoc?

你离开我真会死。 提交于 2020-01-12 14:03:07
问题 I throw a bunch of custom runtime exceptions in my code and I want to make sure that in all public methods, I document which runtime exception might be thrown ( by myself ) and why. This would be very hulpful since I'm maintaining a library which is used by many projects and I want it to be upfront and predictable regarding thrown (runtime) exceptions. Is there a compiler option, maven plugin, Intellij plugin or custom tool that can help me find missed throws clauses? With checked exceptions

Java异步编程之Future机制原理

你说的曾经没有我的故事 提交于 2020-01-11 15:12:45
一、回顾Runnable和Callable 区别: Callable定义了call()方法,Runnale定义了run()方法。 call()方法可以抛出异常,run()方法无法抛出异常。 Callable有返回值,是泛型的,创建的时候传递进去,执行结束后返回。 Callable执行任务的时候可以通过FutureTask得到任务执行的状态。 联系: Callable的call方法实际执行在Runnable的run方法中。 Runnable实例对象需要Thread包装启动,Callable先通过FutureTask(本质还是Runnable)包装,再给Thread包装执行。 二、Future机制原理 Future就是对于具体的Runnable或Callable任务的执行结果进行取消,查询是否完成,获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果。 JDK内置的Future主要使用了Callable接口和FutureTask类。下面对源码进行解析: Callable接口: @FunctionalInterface public interface Callable < V > { /** * Computes a result, or throws an exception if unable to do so. * * @return computed

FileDescriptor详解

天大地大妈咪最大 提交于 2020-01-10 06:57:50
FileDescriptor是"文件描述符". FileDescriptor可以被用来表示开放的文件,开放的套接字等. 当FileDescriptor表示文件来说,当FIleDescriptor表示某文件时,我们可以通俗的将FIleDescriptor看成该文件.但是,我们不能直接通过FIleDescriptor对该文件进行操作;若需要通过FIleDescriptor对该文件进行操作,则需要创建FileDescriptor对应的FileOutputStream,再对文件进行操作. in,out,err的介绍 in:标准输入(键盘)的描述符 out:标准输出(屏幕)的描述符 err:标准错误输出(屏幕)的描述符 他们三个的原理和用法都类似,下面通过out来进行深入的研究 out的作用和原理 out时标准输出(屏幕)的描述符,但是他有什么作用呢? 我们可以通俗理解,out 就代表了标准输出(屏幕).如我们要输出信息到屏幕,既可以通过out来操作,但是,out 有没有提供输出信息到屏幕的接口,怎么办呢? 很简单,我们创建Out对应的"输出流对象",然后通过"输出流"的write()等接口就可以输出信息到屏幕上去了. 1 public static void main(String[] args) throws IOException 2 { 3 FileOutputStream out

异常 try catch finally throw throws

泪湿孤枕 提交于 2020-01-07 03:41:53
1.异常常用方法 /** * 异常常用的方法 */ public class ExceptionApiDemo { public static void main(String[] args) { System.out.println("程序开始了"); try { String str = "a"; System.out.println(Integer.parseInt(str)); } catch (Exception e) { /* * 将当前的错误信息输出到控制台上 */ e.printStackTrace(); //获取错误消息 String message = e.getMessage(); System.out.println(message); } System.out.println("程序结束了"); } } 2.异常处理机制中的try-catch /** * java异常处理机制中的try-catch * 语法: * try{ * 程序代码片段 * }catch(XXXException e){ * 当try中出现XXXException后的解决代码 * } * 或 * try{ * * }finally{ * * } */ public class TryCatchDemo { public static void main(String[] args) {

java序列化(一)

瘦欲@ 提交于 2020-01-03 12:15:58
今天我们来探讨一下java的序列化与反序列化。之前对此一直有概念,但是并没有真正的去测试。大家都知道,所谓的序列化就是把java代码读取到一个文件中,反序列化就是从文件中读取出对象。在网络传输过程中,我们也需要对对象进行序列化,因为一个对象是不能进行传输的。下面先上代码 package serializable; import java.io.*; public class SerializableTest implements Serializable { private static final Long serialVersionUID = 1L; private String name; public String sex; protected int age; private static int id; transient private float height; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge()