Swift 5.0 日本語化計画 : Swift 5.0

致命的なエラーの表示を改善した Xcode 9.1


2017年10月5日   Kuba Mirakek


Swift には、プログラムの期待価を指定できる言語構造があります。実行時にこれらの期待価が満たされない場合、プログラムは終了します。たとえば、配列へのインデックス付け は、インデックスが境界内にあることを暗黙的に表現します。


// Program will terminate if 'index' less than 0 or greater than 'array.count - 1'.
let element = array[index]


失敗時にプログラムを終了させるもう一つの一般的な操作は、optional の強制開封 です。


// Program will terminate if 'self.navigationController' is nil.
let nc = self.navigationController!


もう一つの例は前提条件です。


// Program will terminate if 'index' is less or equal to 0.
precondition(index > 0, "Index must be greater than zero.")


期待価が間違っている場合や、コードにバグがある場合、Swift はプログラムがトラップすることを 保証します。特に開発中には、いくつかの前提条件が満たされていないことが一般的であり、プログラムが終了し、デバッガにそのことが示されます。しかし、Xcode 9.1 (現在ベータ版として入手可能) より前のバージョンでは、デバッガは他の型のクラッシュと同じように、通常は EXC_BAD_INSTRUCTION または EXC_BREAKPOINT (これは低レベルの Mach の例外型) と同じ状況を表示しました。


これは、初心者でも経験豊富な開発者にとっても混乱の原因となっています。Xcode 9.1 では、致命的なエラーの表示が大幅に改善されました。デバッガの下で実行すると、Xcode は、トラップが発生したエディタに 失敗の理由 を表示します。


xcode-fatalerror



実行時トラップをトリガする多くのイベントは以下の通り。


この改善された経験は、アプリのエントリポイントが Swift で書かれている場合にのみ利用可能です(すなわち、 @UIApplicationMain/@NSApplicationMain 属性を持つアプリデリゲート)。


Xcode 9.1 は developer.apple.com からダウンロードできます (現在はプレリリース版、正式版は今年後半にリリース予定)。


<-Swift 4.0 での Dictionary と Set の改善 >Swift 4.1 リリースの過程->






目次
Xcode の新機能

SwiftLogo
  • Swift 5.0 全メニュー

  • Swift プログラム言語

  • Swift について
  • Swift 4.2 への移行

  • ブログ
  • 致命的なエラーの表示を改善した Xcode 9.1
  • Swift のダウンロード

  • Swift 入門

  • 文書化

  • ソースコード

  • コミュニティガイドライン

  • 投稿

  • Swift の継続的統合

  • Swift ソースの互換性

  • フォーカスエリア

  • ABI の安定性

  • サーバーワークグループ

  • コンパイラと標準ライブラリ

  • プロジェクト

  • パッケージマネージャ

  • Swift コアライブラリ

  • REPL とデバッガ、プレイグラウンド













  • トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)












    トップへ(Swift 4.2)