Javascript異常処理メカニズムの詳細

16681 ワード

ES 3の前にjsコードが実行される過程で、エラーが発生するとjsコード全体が実行を停止し、明らかなコードは非常に丈夫ではありません.
JavaやC#などの高度な言語では、アプリケーション全体を停止することなく、発生した例外を処理する例外処理メカニズムが提供されています.
ES 3から、jsも同様の異常処理メカニズムを提供し、jsコードをより丈夫にし、タイムリーに実行する過程で異常が発生し、プログラムに一部の異常回復能力を持たせることができる.
一、Javascriptの異常捕獲メカニズム
1.1基本的なtry…catch文
ES 3はtry-catch文を導入し始め,JavaScriptで例外を処理する標準的な方式である.
構文:try{//異常発生可能コード}catch(error){//エラー発生実行コード}次のコードを見てください.

    <span class="hljs-keyword">try</span>{
        console.log(b);
        console.log(<span class="hljs-string">"      ,    "</span>)

    }<span class="hljs-keyword">catch</span>(error){
        console.log(<span class="hljs-string">"     "</span>)
    }
    console.log(<span class="hljs-string">" try catch     "</span>)
<<span class="hljs-regexp">/script></span></code></pre> 
  <p></p> 
  <blockquote> 
   <p>  :</p> 
  </blockquote> 
  <ol> 
   <li>              try    。try                ,           ,               catch     。</li> 
   <li>  try          ,           try            。        <code>console.log(b);</code>       ,      catch    。  <code>console.log("      ,    ")</code>          </li> 
   <li>   catch      ,js                   ,   catch        catch 。         error     ,           message  ,           。</li> 
   <li>catch          ,          ,        。</li> 
  </ol> 
  <h2 id="12-finally  ">1.2 finally  </h2> 
  <blockquote> 
   <p>  try…catch  ,try                 ,         catch         。</p> 
   <p>Javascript         ,       finally   :   try          ,        finally     。</p> 
   <p> :try                  finally     ,try         ,    catch    ,catch               finally     。</p> 
   <p><strong>  :</strong></p> 
   <p><code>try{</code></p> 
   <p><code>}catch(error){</code></p> 
   <p><code>}finally{</code></p> 
   <p><code>}</code></p> 
  </blockquote> 
  <pre class="prettyprint"><code class="language-javascript hljs "><script>
    <span class="hljs-keyword">try</span>{
        console.log(b);
        console.log(<span class="hljs-string">"      ,    "</span>)

    }<span class="hljs-keyword">catch</span>(error){
        console.log(<span class="hljs-string">"     "</span>)
    }<span class="hljs-keyword">finally</span> {
        console.log(<span class="hljs-string">"         ,     "</span>)
    }
    console.log(<span class="hljs-string">" try catch     "</span>)
<<span class="hljs-regexp">/script></span></code></pre> 
  <p></p> 
  <blockquote> 
   <p>    finally                  。</p> 
  </blockquote> 
  <p>  :</p> 
  <ol> 
   <li> js ,      finally   ,  catch       。            。</li> 
   <li>     catch   ,                ,       finally      ,         。</li> 
   <li>  ,      ,       catch   。</li> 
  </ol> 
  <pre class="prettyprint"><code class="language-javascript hljs "><script>
    <span class="hljs-keyword">try</span>{
        console.log(b);
        console.log(<span class="hljs-string">"      ,    "</span>)

    }<span class="hljs-keyword">finally</span> {
        console.log(<span class="hljs-string">"         ,     "</span>)
    }
    console.log(<span class="hljs-string">" try catch     "</span>)
<<span class="hljs-regexp">/script></span></code></pre> 
  <p></p> 
  <h2 id="13-js      ">1.3 js      </h2> 
  <blockquote> 
   <p>                   。             ,       ,              。js       7      :</p> 
  </blockquote> 
  <ul> 
   <li>Error ‰</li> 
   <li>EvalError </li> 
   <li>RangeError ‰ </li> 
   <li>ReferenceError ‰ </li> 
   <li>SyntaxError ‰ </li> 
   <li>TypeError ‰ </li> 
   <li>URIError</li> 
  </ul> 
  <p>  :</p> 
  <ol> 
   <li>Error          ,            。</li> 
   <li>EvalError           eval()           </li> 
   <li>TypeError     JavaScript       ,             ,             ,        </li> 
   <li>    ,     ,       。           。        ,                 。</li> 
  </ol> 
  <pre class="prettyprint"><code class="language-javascript hljs "><span class="hljs-keyword">try</span> { 
  someFunction(); 
} <span class="hljs-keyword">catch</span> (error){ 
  <span class="hljs-keyword">if</span> (error <span class="hljs-keyword">instanceof</span> <span class="hljs-built_in">TypeError</span>){ 
    <span class="hljs-comment">//  ૌ     </span>
  } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (error <span class="hljs-keyword">instanceof</span> <span class="hljs-built_in">ReferenceError</span>){ 
    <span class="hljs-comment">//       </span>
  } <span class="hljs-keyword">else</span> { 
      <span class="hljs-comment">//        </span>
  }
}</code></pre> 
  <h2 id="14-    trycatch">1.4     try…catch</h2> 
  <p>​   try-catch         ,              ,           。           。</p> 
  <p>​    try-catch                 。           JavaScript       ,                 。               ,                try-catch     ,        ,           。</p> 
  <p>​                 ,    try-catch         。  ,                  ,        ,             ,          。      ,      try-catch   。  try…catch             。</p> 
  <h1 id=" throw      "> 、throw      </h1> 
  <h2 id="21-  js         ">2.1   js         </h2> 
  <blockquote> 
   <p>​             ,         ,    (javascript  )    ,          ,  try…catch   。</p> 
   <p>​                                  。</p> 
   <p>​    throw             。</p> 
  </blockquote> 
  <pre class="prettyprint"><code class="language-javascript hljs "><script>
    <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">Error</span>(<span class="hljs-string">"   "</span>);
    console.log(<span class="hljs-string">"       "</span>)
<<span class="hljs-regexp">/script></span></code></pre> 
  <p></p> 
  <blockquote> 
   <p>  :</p> 
  </blockquote> 
  <ol> 
   <li>thow              。                        ,                  。</li> 
   <li>         ,         ,        ,         。          ,      try…catch   。</li> 
   <li>                ,         。</li> 
   <li>                        。<code>throw new SyntaxError("    ...");</code></li> 
  </ol> 
  <blockquote> 
   <p>      :</p> 
  </blockquote> 
  <pre class="prettyprint"><code class="language-javascript hljs "><script>
    <span class="hljs-comment">/*         ,      。*/</span>
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">foo</span><span class="hljs-params">(num)</span> {</span>
        <span class="hljs-keyword">if</span>(<span class="hljs-keyword">typeof</span> num == <span class="hljs-string">"number"</span>){
            <span class="hljs-keyword">return</span> num * num;
        }<span class="hljs-keyword">else</span>{
            <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-built_in">TypeError</span>(<span class="hljs-string">"    ,         ..."</span>)
        }
    }
    console.log(foo(<span class="hljs-number">33</span>))
    console.log(foo(<span class="hljs-string">"abc"</span>))
<<span class="hljs-regexp">/script></span></code></pre> 
  <p></p> 
  <h2 id="22-            ">2.2             </h2> 
  <blockquote> 
   <p>​          js          ,          ,              。</p> 
   <p>​           ,                   。      Error  。</p> 
  </blockquote> 
  <pre class="prettyprint"><code class="language-javascript hljs "><script>
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">MyError</span><span class="hljs-params">(message)</span> {</span>
        <span class="hljs-keyword">this</span>.message = <span class="hljs-string">"  :        "</span>
        <span class="hljs-keyword">this</span>.name = <span class="hljs-string">"     "</span>;
    }
    MyError.prototype = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Error</span>();
    <span class="hljs-keyword">try</span> {
        <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> MyError(<span class="hljs-string">"  :         "</span>)
    }<span class="hljs-keyword">catch</span> (error){
        console.log(error.message)
    }
<<span class="hljs-regexp">/script></span></code></pre> 
  <p></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC WAP    -->
                    <div id="SOHUCS" sid="1274507662662320128"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js">
                    
                     
                
興味があるかもしれません
  • Java同時発注スレッドプールと原子カウント
    lijingyao8206
    Javaカウント ThreadPool まとめて発注する. JAvaスレッドプール
  • JAvaプログラミング思想抽象クラスとインタフェース
    ユリはお茶じゃない
    java 抽象クラス インタフェース
  • [不動産とビッグデータ]不動産データマイニングシステム
    comsci
    データ・マイニング
  • 配列キューの概要
    刃を浴びて喜ぶ.
    アレイキュー
  • Oracleストレージ・プロシージャでコンパイルできない解決策
    IT独行者
    oracle きおくてつづき
  • システムの再インストール後oracleリカバリ
    文強chu
    oracle
  • python学習二(いくつかの基礎文法)
    みかん
    pthon 基礎文法
  • svn共通コマンド
    aichenglong
    SVN バージョンのロールバック
  • アルファベットで分類:
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z その他
    トップページ -
    私たちについて -
    構内検索 -
    Sitemap -
    権利侵害苦情
    著作権すべてのIT知識ベースCopyRight© 2000-2050 IT知識ベースIT 610.com , All Rights Reserved.
    京ICP備09083238号