[Python-doc-jp 2120] libexcs.tex
MATSUI Fe2+ Tetsushi
VED03370 @ nifty.ne.jp
2007年 3月 30日 (金) 22:48:25 JST
mft です。
libexcs.tex の 2.5 への変更部分を訳してコミットしようとしたのですが、
どうしても
cvs commit: Up-to-date check failed for `libexcs.tex'
cvs [commit aborted]: correct above errors first!
と言われてコミットできません(cvs up 直後でもだめです)。
そういうわけで、どなたか添付のパッチを当ててコミットして下さい。
なお、パッチの最後の部分で、exception_hierarchy.txt を読み込むようにし
ています。もともとは ../../Lib/test/ にあるファイルなんですが、doc_jp
では管理していない領域なので、lib/ にコピーして読み込めばいいかな、と
考えてそのように書いてあります。その方針で良ければ、当該ファイルもつい
でにコミットして下さい。
では宜しくお願いします。
--
MATSUI Fe2+ Tetsushi
-------------- next part --------------
Index: libexcs.tex
===================================================================
RCS file: /cvsroot/pythonjp/doc_jp/lib/libexcs.tex,v
retrieving revision 1.10
diff -u -r1.10 libexcs.tex
--- libexcs.tex 10 Oct 2005 15:13:18 -0000 1.10
+++ libexcs.tex 30 Mar 2007 13:29:56 -0000
@@ -15,7 +15,7 @@
過去の Python のバージョンでは、文字列の例外がサポートされていました。
Python 1.5 よりも新しいバージョンでは、全ての標準的な例外は
クラスオブジェクトに変換され、ユーザにも同様にするよう奨励しています。
-文字列による例外は \code{PendingDeprecationWarning} を
+文字列による例外は Python 2.5 以降は \code{DeprecationWarning} を
送出するようになります。
将来のバージョンでは、文字列による例外のサポートは削除されます。
@@ -43,9 +43,10 @@
文字列の例外の場合、関連値自体は \keyword{except} 節 (あった場合)
の二つ目の引数として与えた名前を持つ変数に記憶されます。
クラス例外の場合、この値は例外クラスのインスタンスです。
-例外が標準のルートクラスである \exception{Exception} から
+例外が標準のルートクラスである \exception{BaseException} から
導出された場合、関連値は例外インスタンスの \member{args} 属性中
-に他の属性と同様に置かれます。
+に置かれます。もし引数が一つならば(このようにすることが望まれますが)、
+その引数の値は \member{message} 属性に収められます。
ユーザによるコードも組み込み例外を送出することができます。
これは例外処理をテストしたり、インタプリタがある例外を送出する
@@ -55,7 +56,8 @@
組み込み例外クラスは新たな例外を定義するためにサブクラス化する
ことができます; プログラマには、新しい例外を少なくとも
-\exception{Exception} 基底クラスから導出するよう勧めます。
+\exception{Exception} クラスから導出するよう勧めます。
+\exception{BaseException} からは導出しないで下さい。
例外を定義する上での詳しい情報は、
\citetitle[../tut/tut.html]{Python チュートリアル} の
``ユーザ定義の例外'' の項目にあります。
@@ -64,23 +66,36 @@
以下の例外クラスは他の例外クラスの基底クラスとしてのみ使われます。
+\begin{excdesc}{BaseException}
+
+全ての組み込み例外のルートクラスです。ユーザ定義例外を直接このクラス
+から導出することは意図していません(そういう場合は \exception{Exception}
+を使ってください)。このクラスに対して \function{str()} や
+\function{unicode()} が呼ばれた場合、引数の文字列表現かまたは引数が無
+い時には空文字列が返されます。一つだけの引数が渡された場合、それが
+\member{message} 属性に格納されます。二つ以上の引数が渡された場合、
+\member{message} 属性は空文字列になります。こうした振舞いは
+\member{message} がなぜ例外が送出されたかを説明するメッセージを格納す
+る場所だという事実を反映することを意図しています。例外に対してより多く
+のデータを紐付けたい場合は、インスタンスの任意の属性が利用できます。
+全ての引数は \member{args} にもタプルとして格納されるようになっていま
+すが、この属性は廃止の方向に向かっていますのでできるだけ使わないように
+する方がいいでしょう。
+\versionadded{2.5}
+\end{excdesc}
+
\begin{excdesc}{Exception}
-例外のルートクラスです。全ての組み込み例外はこのクラスから導出
+全ての組み込み例外のうち、システム終了でないものはこのクラスから導出
されています。全てのユーザ定義例外はこのクラスから導出される
-べきですが、(今のところまだ) それは強制ではありません。
-\function{str()} をこのクラス (またはほとんどの導出クラス) の
-インスタンスに適用すると、引数を文字列にしたが返されるか、
-インスタンスのコンストラクタが引数なしの場合には空の文字列が返されます。
-インスタンスをシーケンスとして使うと、コンストラクタに渡された引数にアクセス
-することができます (古いコードとの互換性のために便利です)。
-引数はまた、インスタンスの \member{args} 属性として、タプルで
-得ることもできます。
+べきです。
+\versionchanged[\exception{BaseException} から導出するように変更されました]{2.5}
\end{excdesc}
\begin{excdesc}{StandardError}
-\exception{StopIteration} および \exception{SystemExit} 以外の、
-全ての組み込み例外の基底クラスです。
-\exception{StandardError} 自体はルートクラス \exception{Exception}
+\exception{StopIteration}、\exception{SystemExit}、
+\exception{KeyboardInterrupt} および \exception{SystemExit}
+以外の、全ての組み込み例外の基底クラスです。
+\exception{StandardError} 自体は \exception{Exception}
から導出されています。
\end{excdesc}
@@ -131,7 +146,7 @@
\begin{excdesc}{AttributeError}
% xref to attribute reference?
-属性の参照や代入が失敗した場合に送出されます。(対照のオブジェクトが
+属性の参照や代入が失敗した場合に送出されます。(オブジェクトが
属性の参照や属性の代入をまったくサポートしていない場合には
\exception{TypeError} が送出されます。)
\end{excdesc}
@@ -156,6 +171,13 @@
送出されます。
\end{excdesc}
+\begin{excdesc}{GeneratorExit}
+ジェネレータの \method{close()} メソッドが呼び出されたときに送出されま
+す。この例外は技術的にはエラーでないので \exception{StandardError}
+ではなく \exception{Exception} から導出されています。
+\versionadded{2.5}
+\end{excdesc}
+
\begin{excdesc}{IOError}
% XXXJH xrefs here
(\keyword{print} 文、組み込みの \function{open()} またはファイル
@@ -193,9 +215,14 @@
ユーザが割り込みキー (通常は \kbd{Control-C} または \kbd{Delete} キー
です) を押した場合に送出されます。割り込みが起きたかどうかはインタプリタ
の実行中に定期的に調べられます。
-% XXXJH xrefs here
+% XXX(hylton) xrefs here
組み込み関数 \function{input()} や \function{raw_input()} がユーザの
入力を待っている間に割り込みキーを押しても、この例外が送出されます。
+この例外は \exception{Exception} を捕まえるコードに間違って捕まってイ
+ンタプリタが終了するのを阻止されないように \exception{BaseException}
+から導出されています。
+\versionchanged[\exception{BaseException} から導出されるように変更され
+ました]{2.5}
\end{excdesc}
\begin{excdesc}{MemoryError}
@@ -268,6 +295,7 @@
\versionadded{2.2}
\end{excdesc}
+
\begin{excdesc}{SyntaxError}
% XXXJH xref to these functions?
パーザが構文エラーに遭遇した場合に送出されます。この例外は
@@ -296,7 +324,7 @@
\end{excdesc}
\begin{excdesc}{SystemExit}
-% XXXJH xref to module sys?
+% XXX(hylton) xref to module sys?
この例外は \function{sys.exit()} 関数によって送出されます。この例外が
処理されなかった場合、Python インタプリタは終了します; スタックの
トレースバックは全く印字されません。関連付けられた値が通常の整数
@@ -307,7 +335,7 @@
この例外のインスタンスは属性 \member{code} を持ちます。この値は
終了状態またはエラーメッセージ (標準では \code{None} です) に
設定されます。また、この例外は技術的にはエラーではないため、
-\exception{StandardError} からではなく、\exception{Exception} から
+\exception{StandardError} からではなく、\exception{BaseException} から
導出されています。
\function{sys.exit()} は、後始末のための処理 (\keyword{try} 文の
@@ -316,6 +344,13 @@
例外に翻訳されます。即座に終了することが真に強く必要であるとき
(例えば、\function{fork()} を呼んだ後の子プロセス内) には
\function{os._exit()} 関数を使うことができます。
+
+この例外は \exception{Exception} を捕まえるコードに間違って捕まえられ
+ないように、\exception{StandardError} や \exception{Exception} からで
+はなく \exception{BaseException} から導出されています。これにより、
+この例外は着実に呼出し元の方に伝わっていってインタプリタを終了させます。
+\versionchanged[\exception{BaseException} から導出されるように変更され
+ました。]{2.5}
\end{excdesc}
\begin{excdesc}{TypeError}
@@ -363,11 +398,16 @@
\begin{excdesc}{WindowsError}
Windows 特有のエラーか、エラー番号が \cdata{errno} 値に対応しない
-場合に送出されます。\member{errno} および \member{strerror} 値は
+場合に送出されます。\member{winerrno} および \member{strerror} 値は
Windows プラットフォーム API の関数、 \cfunction{GetLastError()} と
\cfunction{FormatMessage()} の戻り値から生成されます。
+\member{errno} の値は \member{winerror} 値を対応する \code{errno.h}
+の値に対応付けたものです。
+
\exception{OSError} のサブクラスです。
\versionadded{2.0}
+\versionchanged[以前のバージョンは \cfunction{GetLastError()} のコード
+を \member{errno} に入れていました。]{2.5}
\end{excdesc}
\begin{excdesc}{ZeroDivisionError}
@@ -410,51 +450,16 @@
将来意味構成が変わることになっている文の構成に対する警告の基底クラスです。
\end{excdesc}
+\begin{excdesc}{ImportWarning}
+モジュールインポートの誤りと思われるものに対する警告の基底クラスです。
+\versionadded{2.5}
+\end{excdesc}
+
+\begin{excdesc}{UnicodeWarning}
+ユニコードに関連した警告の基底クラスです。
+\versionadded{2.5}
+\end{excdesc}
+
組み込み例外のクラス階層は以下のようになっています:
-\begin{verbatim}
- Exception
- +-- SystemExit
- +-- StopIteration
- +-- StandardError
- | +-- KeyboardInterrupt
- | +-- ImportError
- | +-- EnvironmentError
- | | +-- IOError
- | | +-- OSError
- | | +-- WindowsError
- | +-- EOFError
- | +-- RuntimeError
- | | +-- NotImplementedError
- | +-- NameError
- | | +-- UnboundLocalError
- | +-- AttributeError
- | +-- SyntaxError
- | | +-- IndentationError
- | | +-- TabError
- | +-- TypeError
- | +-- AssertionError
- | +-- LookupError
- | | +-- IndexError
- | | +-- KeyError
- | +-- ArithmeticError
- | | +-- OverflowError
- | | +-- ZeroDivisionError
- | | +-- FloatingPointError
- | +-- ValueError
- | | +-- UnicodeError
- | | +-- UnicodeEncodeError
- | | +-- UnicodeDecodeError
- | | +-- UnicodeTranslateError
- | +-- ReferenceError
- | +-- SystemError
- | +-- MemoryError
- +---Warning
- +-- UserWarning
- +-- DeprecationWarning
- +-- PendingDeprecationWarning
- +-- SyntaxWarning
- +-- OverflowWarning (2.4では生成されません。2.5では無くなります)
- +-- RuntimeWarning
- +-- FutureWarning
-\end{verbatim}
+\verbatiminput{exception_hierarchy.txt}
Python-doc-jp メーリングリストの案内