我的代码不加 throws Exception就要报下面的错.什么道理啊
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class SDec{
public static void main(String args[]) throws Exception
{
FileInputStream f=new FileInputStream("SEnc.dat");
int num=f.available();
byte[] ctext=new byte[num];
f.read(ctext);
FileInputStream f2=new FileInputStream("keykb1.dat");
int num2=f2.available();
byte[] keykb=new byte[num2];
f2.read(keykb);
SecretKeySpec k=new SecretKeySpec(keykb,"DESede");
Cipher cp=Cipher.getInstance("DESede");
cp.init(Cipher.DECRYPT_MODE,k);
byte[] ptext=cp.doFinal(ctext);
String p=new String(ptext,"UTF8");
System.out.println(p);
}
}
--------------------Configuration: <Default>--------------------
C:\SDec.java:8: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
                FileInputStream f=new FileInputStream("SEnc.dat");
                                  ^
C:\SDec.java:9: unreported exception java.io.IOException; must be caught or declared to be thrown
                int num=f.available();
                                   ^
C:\SDec.java:11: unreported exception java.io.IOException; must be caught or declared to be thrown
                f.read(ctext);
                      ^
C:\SDec.java:12: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
                FileInputStream f2=new FileInputStream("keykb1.dat");
                                   ^
C:\SDec.java:13: unreported exception java.io.IOException; must be caught or declared to be thrown
                int num2=f2.available();
                                     ^
C:\SDec.java:15: unreported exception java.io.IOException; must be caught or declared to be thrown
                f2.read(keykb);
                       ^
C:\SDec.java:17: unreported exception java.security.NoSuchAlgorithmException; must be caught or declared to be thrown
                Cipher cp=Cipher.getInstance("DESede");
                                            ^
C:\SDec.java:18: unreported exception java.security.InvalidKeyException; must be caught or declared to be thrown
                cp.init(Cipher.DECRYPT_MODE,k);
                       ^
C:\SDec.java:19: unreported exception javax.crypto.IllegalBlockSizeException; must be caught or declared to be thrown
                byte[] ptext=cp.doFinal(ctext);
                                       ^
C:\SDec.java:20: unreported exception java.io.UnsupportedEncodingException; must be caught or declared to be thrown
                String p=new String(ptext,"UTF8");
                         ^
10 errors

解决方案 »

  1.   

    上面的报错意思是说,你的代码里面有可能出现异常,但你没有做任何处理,解决的方法就是
    1.抛出异常:throws ***Exception,把异常抛出给顶层的调用方法,由它去处理
    2.捕捉异常:try-catch-finally,把可能产生异常的代码放在try里面,把要捕捉的异常放在
               catch(){...}里面进行处理
      

  2.   

    出现这种错误是,你的代码有可能出现异常,所以你必须要捕捉异常才可以通过。
    一般用try ...catch语句。
      

  3.   

    当你i/o操作时,java的设计会产生exception,异常的意思就是当你do it的时候可能会有意外的事情发生,就像开车会有意外一样,那么java会让你throw exception,所谓throws就是产生一个异常对象,然后抛出。throws是一个预期,trycatch则让你明确的捕捉到异常对象,把有异常嫌疑的代码放到try里,如果真的发生exception,那么就catch它,fiannly是必须发生的,比如你读写内存的时候,try 发生意外,catch或许可能没有做到她的只能,那么我们还是要关闭用来读写内存的那个对象,所以finally因此而来!
      

  4.   

    当你明确throws的时候java底层的设计会处理,而不会因此中断程序的goon