多くのフロントエンドエンジニアは、この見出しを尋ね生成することができる見ました:
APPは、なぜPythonのを学ぶためにわざわざすることができ、私は適切に使用JS、バックエンドすることができますか?
少なくとも以下の2つの理由があります。
- 曲線を学びます。JavaScriptに構文的に類似しES6後(活字体)とPythonは、多くの場所を持っているので、学習曲線が非常に、滑らかで始めるのは困難である非常に低いです。
- シナリオ。ウェブ開発のJavaScriptが王であるが、それでも一部の地域では、いくつかの問題があります。たとえば、あなたはNode.jsのバックエンドを書くことができますが、しかし、ほとんどCGI層のために、インタフェースおよび統合テンプレートのレンダリング、およびPythonなど、Javaは広くPythonの中に機械学習の観点から、バックエンドサービスを書くために、このような言語を使用されてきた、またやります大きな利点。
この記事では、二つの言語の間で「異常」コントラストではPythonを学びます。
なぜ我々は例外に対処する必要がありますか
例外は、コードを書く際に考慮しなければならない問題であるが、それはほとんどの記事で述べられていない、ホットな話題ではありません。
特にこの1のWebフロントエンドには、ブラウザの強力なフォールトトレランス機能は、エンジニアが(非表示)例外の数を解決するのに役立ちます。
しかし、あなたは経済的損失が生じ、リードにいる間、システムがクラッシュし、機能の動作に影響を与えるに至るまで異常を無視した場合。
例外処理
キャプチャー
同じキーワードのPythonでキャッチJavaScriptの例外は、使用していますtry
。
// JavaScript
try {
...
}
# Python
try:
...
しかし、両方は制限があります。唯一の異常な同期コードの実行をキャプチャするために使用されます。
異常な捕捉された非同期JavaScriptコードの場合には動作環境に応じて、対処するのが比較的複雑でのNode.js、ブラウザに分けることができ、キャプチャレンジを押し全体と部分キャプチャキャプチャに分けることができます。
// 浏览器全局异常捕获
window.onError = e => {}
window.addEventListener('', e => {}) 捕获请求错误
// 浏览器Ajax异常捕获
var xhr = new XMLHttpRequest();
xhr.onload = function(e) {
if(this.status > 400){
...
}
};
// Node.js 全局异常捕获
process.on('uncaughtException', e => {})
// Node.js 回调方式异常捕获
fs.readFile('/etc/passwd', (err, data) => {
if (err) {
...
}
});
Pythonはさえも、関数内捕獲することができる非同期スレッドまたはプロセスに、はるかに単純なケースでは、他の方法が報告されました。
def _parse_speed(key_name, speed_list):
try:
...
t = threading.Thread(target=_parse_speed, args=(v, speed_list))
t.start()
異常な状況をキャプチャすることにより、特別な指示ならば、議論は以降のみ同期例外をキャプチャするために、キーワードを使用しようとする意味し、より複雑です。
プロセス
JavaScriptは、例外を処理するには、いくつかの方法を見てください。
- キャッチ。処理例外処理のためのcatchブロックは非常に広範で、すべての例外が捕捉されているのtryブロックです。
- 最終的には。最終的に、ブロックは、例外が発生したか否かを示す、コードの命令ブロックが実行されます。
多くの読者は、コードがcatchブロックの後に実行し、最終的に同じ効果をブロックすることだと思うかもしれないが、実際には違いがあります!
以下は一例です
fn = () => {
try {
throw Error()
} catch(e) {
throw Error()
return 1
} finally {
return 2
}
return 3
}
fn() // 是2不是3
それは最終的にかかわらず、お試しいただくか、キャッチ実行エラーが実行されるの、コードをブロックします。
Pythonの例外処理:
- 除きます。あなたは非常に柔軟性のある書き込み、例外処理ロジックが複数存在してもよく、処理されるように、複数の例外タイプを指定することができます。
- 他に。異常がtryブロックで発生したときに実行することができる他のブロックではありません。
- 最終的には。JavaScriptを使用してプロパティ。
除いて、使用のいくつかの例を以下に示します。
# 捕获异常实例
except Exception as e:
# 批量异常捕获
except (IOError, TypeError):
# 异常分类捕获:
except OSError as err:
...
except ValueError:
...
except:
...
投げ出します
JavaScriptはキーワードスローでErrorオブジェクトをスローするために使用することができます。
インスタンスが例外をスローするためにそれに対応するPythonは、レイズです。
キーワードは同じではありませんが、文言は、実質的に類似しているが。
// JavaScript
throw Error(...)
# Python
raise Exception(...)
例外の種類
JavaScriptが、あまり重要例外クラスの話については、例外が手動で異なる判断を処理する必要があるため、例外タイプは比較的簡単です。
Pythonの例外型は、はるかに豊富であり、
概要
- 側面をキャプチャし、Pythonのより複雑なシーンのJavaScript、Pythonの学習を転送が簡単です。
- 最終的には、キーワードをサポートしてどちらの処理。操作が簡略化されていることはJavaScriptを除き、唯一の例外は、catchブロックですべてのタイプを処理します。Pythonのほとんどの高水準言語と一致プラクティス、多くの時間は、主要な機能として見なさ他、さまざまな異常のために処理しました。
- スローさの面、両方のちょうど別のキーワード。
参考: