有两中方式:1捕获异常,自己处理
2throw出去,让别人处理
举个例子:
public class A{
try{
可能放生异常的语句
}catch(Exception e){
egetMessage();//自己处理
}
}
public class A throws Exception{
可能放生异常的语句
}//throw出去,让别人处理
注意这里用的是throws
如果在方法里面则用throw
举例:
public class A{
try{
可能放生异常的语句
}catch(Exception e){
egetMessage();//自己处理
throw new Exception ("");
}
}
import javautilScanner;
public class B {
public static void main(String args[]) throws Exception {
Systemoutprintln("1C# 2Java 3html");
boolean flag=true;//while循环是否继续,true继续循环,false停止循环
int num=0;//存放输入内容转成int之后的变量
while(flag){
Scanner scan = new Scanner(Systemin);
Systemoutprintln("请输入课程代号(1-3之间的数字):");
String bh=scannext();
try {
num = new B()checkInt(bh);
flag=false;//输入的内容转成int成功时,停止循环输入
}catch (ClassCastException e) {//输入为小数类型时
Systemoutprintln("请输入整数");
} catch (NumberFormatException e) {//输入非数字类型时
Systemoutprintln("请输入正确的数字");
}catch (ArithmeticException e) {//输入的数字不在1-3之间时
Systemoutprintln("请输入1-3之间的数");
}
}
//以下输出你选择的课程
if(num==1){
Systemoutprintln("你输入的课程是:1C#");
}else if(num==2){
Systemoutprintln("你输入的课程是:2Java");
}else if(num==3){
Systemoutprintln("你输入的课程是:3html");
}
}
int checkInt(String bh)throws Exception{
try{
int num = IntegerparseInt(bh);//将输入的内容转换成int
if(num<1 || num>3){
throw new ArithmeticException();//转成int成功但不在1-3之间,手动抛出异常
}else{
return num;
}
}catch (NumberFormatException e) {//转换成int类型时失败
try{
DoubleparseDouble(bh);//转成double类型
throw new ClassCastException();//转成double类型成功,手动抛出异常
}catch (NumberFormatException e2) {//转成double类型失败
throw new NumberFormatException();//手动抛出转型失败异常
}
}
}
}
//用到trycatch还有手动抛出异常做的
17218686 2552552550 17218680 20211916011 20211916012 19216811 25525500 19216811 19216811 19216811 //首先你要先自定义两个异常类NegativeException和OddException public class NegativeException extends Exception{ public NegativeException(String s){ super(s); } public NegativeException(){ super(""); } } public class OddException extends Exception{ public OddException(String s){ super(s); } public OddException(){ super(""); } } //然后就要定义一个InputDigit实现10个整数的输入,我这举例用的10,具体多少你自己决定 import javautil; public class InputDigit { int a[]=new int[10]; Scanner sc=new Scanner(Systemin); //创建输入端 public void getDigit(){ //getDigit方法从键盘接收整型数据 Systemoutprintln("请输入10个整数:"); for(int i=0;i<10;i++){ a[i]=scnextInt(); } } } //最后定义一个求偶数平方根的类Osqrt public class Osqrt extends InputDigit{ private int s=0; public Osqrt(){ } public void ossqrt() { for(int i=0;i<10;i++) try { if(a[i]<0) throw new NegativeException("负数异常"); else if(a[i]%2==1) throw new OddException("奇数异常"); else Systemoutprintln(a[i]+"的平方根为:"+Mathsqrt(a[i])); } catch(NegativeException e){ Systemoutprintln(a[i]+"是一个负数"); } catch(OddException e){ Systemoutprintln(a[i]+"是一个奇数"); } } public static void main(String[] args){ Osqrt mk=new Osqrt(); mkgetDigit(); mkossqrt(); } } // 运行主类Osqrt就行了,如果有不懂的地方可以问我,由于不可以插图,不然把结果给你看看了
比如说io异常,如果文件不存在,但是你又去读,肯定会出异常的这个时候就要try,catch *** 作了一般可能出现异常的地方要么trycatch掉,要么throws给别人去解决如果文件正常读取,那就没有异常了
很简单的,如果你查api文档会发现类System有个“字段摘要”,很容易发现有个out,
它返回static PrintStream,还会发现System有个方法是static void setOut(PrintStream out)
重新分配“标准”输出流。 再点击PrintStream,很明显它是OutputStream
的子类 解决如下
输出流重定向
import javaio;
public class IO2File {
public static void main(String[] args) throws IOException {
File f=new File("outtxt");
fcreateNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(f);
PrintStream printStream = new PrintStream(fileOutputStream);
SystemsetOut(printStream);
Systemoutprintln("默认输出到控制台的这一句,输出到了文件 outtxt");
}
}
以上就是关于JAVA语言中,异常处理有哪几种方式全部的内容,包括:JAVA语言中,异常处理有哪几种方式、Java控制台中精确判断输入数字用“什么抛异常”、JAVA 中关于异常捕获的编程问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)