先去看看java的异常处理机制吧,这是最基础的概念了,推荐《Thinking in Java》

解决方案 »

  1.   

    throws MyStringException  是表示这个方法【可能】会抛出这个异常,调用这个方法的类必须
    catch或者也声明抛出这个异常(RuntimeException的子类异常可以不声明)
      

  2.   

    请看这个MyStringException,它的用意就是限制字符串的长度不超过默认长度。所以,当使用MyString的构造函数创建一个字符串的时候,它会判断该字符串长度是否大于4,如果大于4,就引发(throw)MyStringException这个异常来告知用户,企图创建的字符串超长了。而这个异常在构造函数中并不作处理,于是构造函数将此异常抛出(throws),交给它的调用者来处理。请注意throws和throw是不同的,throw是用来引发一个异常的,异常就是因为throw才产生的;而throws是抛出异常,此时异常已经存在了,而该方法又不想处理异常,于是抛给它的调用者去处理。