タグ

例外に関するJxckのブックマーク (26)

  • アプリケーションから例外を投げる派、投げない派 - Shin x Blog

    例外をどのような状況に投げるかもしくは投げないか、というのはわりと意見が分かれるところです。もちろん、プログラミング言語によっても異なりますが、同じプログラミング言語ユーザ同士でも様々です。 基の考え方 ベースとしては、Effective Java の項目 39 にある下記の方針が参考になります。 例外的な状況の時にのみ例外を使う。 Effective Java 禅問答のような定義ですが、これには異論は無いでしょう。例外を正常フローで利用したり、制御構造に用いるべきではありません。 人によって異なるのは「例外的な状況」の解釈です。 例外的な状況 この「例外的な状況」の解釈は人によって異なるようで、これまでも議論になっていました。これまで聞いた解釈を乱暴に分けると以下の 2 パターンに分かれます。 1. アプリケーションから独自の例外を投げる派 ランタイムやミドルウェア連携などプラットフォ

    アプリケーションから例外を投げる派、投げない派 - Shin x Blog
    Jxck
    Jxck 2016/12/27
    そこに例外とすべき状況があるかどうかであって、投げる/投げないが "派閥" として議論になる問題では無いのでは。
  • Let It Crashとは何か - mookjp.io

    この記事はRecruit Engineers Advent Calendar 2016 - Adventarの21日目の記事です。 昨日はktrysmtさんのChrome便利拡張のお話 ググったあとワンクリックで期間指定ができるChrome拡張を作った - Qiita でした。 “Let It Crash"ってなかなかのパワーフレーズじゃないですか? ちょこちょこといろいろな場所で見かけるものの、(letitcrash.comとか…)その定義や、それがどこで出てきたフレーズなのかまでに触れている記事は少ないのでは、と思います。 この記事では、“Let It Crash"が初めて登場したと思われる、Erlang設計者の1人であるJoe Armstrong氏の論文「Making reliable distributed systems in the presence of software e

    Let It Crashとは何か - mookjp.io
  • null安全でない言語は、もはやレガシー言語だ - Qiita

    これらは、表中の「リプレース対象言語」に挙げたように、多くのメジャー言語に対する代替手段でもあります。 Java の代わりには Kotlin や Ceylon が、 JavaScript には TypeScript や Flow が、 Objective-C には Swift が、そして PHP には Hack があります。 Python は自身に null 安全 を取り込みました。 Crystal は直接 Ruby と連携して使えるわけではありませんが、 Ruby 風の null 安全 な言語です。 RustC++ の代替を目指して開発され、 Firefox の一部で C++ のコードを置き換えるのに使われています [^100] 。 null が引き起こしてきた数々の問題を考えると、僕は、 null 安全 は GC (やその他の安全なメモリ管理手法)に匹敵するプログラミング言語の進

    null安全でない言語は、もはやレガシー言語だ - Qiita
  • PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016

    2016/11/03 @ PHPカンファレンス2016 2016/12/15 @ PHPカンファレンス2016再演イベントにて改訂 2017/06/10 @ PHPカンファレンス福岡2017にて改訂 2017/06/10 @ PHPカンファレンス福岡2017講演録画 https://www.youtube.com/watch?v=54jHDHvcYAo

    PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016
    Jxck
    Jxck 2016/11/04
  • linux-insides/interrupts-3.md at master · 0xAX/linux-insides · GitHub

    Interrupts and Interrupt Handling. Part 3. Exception Handling This is the third part of the chapter about an interrupts and an exceptions handling in the Linux kernel and in the previous part we stopped at the setup_arch function from the arch/x86/kernel/setup.c source code file. We already know that this function executes initialization of architecture-specfic stuff. In our case the setup_arch fu

    linux-insides/interrupts-3.md at master · 0xAX/linux-insides · GitHub
  • Proper Error Handling

    No matter how good you are as a developer and how many tests you write: your application will throw errors. At YPlan we tried to catch all the exceptions and handle them in the right way to give our users the best possible experience. In this talk, I will go through the problems we tried to solve and the solutions we implemented #forreal

    Proper Error Handling
  • Java のチェック例外と非チェック例外の考察まとめ - 全力で怠けたい

    世間ではオワコンと揶揄されることも珍しくない Java ですが、Java を初めたばかりのエンジニアがチェック例外と非チェック例外の使い分けについて「ベストプラクティスないの?」と調べたのをまとめてみました。 エントリまとめ どのエントリも Java についての深い洞察と開発の実践現場での生きた経験をもとに書かれていて大変に勉強になりました *1 エントリ中からリンクされているエントリもぜひ一読されることをおすすめします。 検査例外と非検査例外(実行時例外)をどう使い分けるか - Lino Blog Java言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指して Javaのチェック例外はクソ仕様 - やさしいデスマーチ 例外の扱いについて その2 - じゅんいち☆かとうの技術日誌 「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤

    Jxck
    Jxck 2016/09/06
  • Java/Androidにおける例外設計、あるいは「契約による設計」によるシンプルさの追求 - Qiita

    なぜ今Javaの例外処理か Javaにおける「チェック例外」はSwift、Objective-C、RubyJavaScriptといったネイティブ・ウェブアプリ開発でよく用いられる他の言語には現れないものです。 SwiftにはOptionalやErrorTypeがありますが、Javaにおいてもnullやエラーのハンドリングの実装方法をうまくやる必要があります。 なぜ例外を握りつぶしたらいけないのか、なぜアサーションが望ましいのか、なぜチェック例外と非チェックを分けたのか、という点を考えてみたいと思います。 参考資料 例外設計における大罪 (契約プログラミングについて) Effective Java読書会9日目 - 例外 (Javaにおける例外の扱いについて) 契約による設計から見た例外 (この記事の方がより詳しいけど難しいイメージ) チェック例外と非チェック例外の違い チェック例外→「回復

    Java/Androidにおける例外設計、あるいは「契約による設計」によるシンプルさの追求 - Qiita
    Jxck
    Jxck 2016/09/06
  • 例外について色々と考えてみた - ぐるぐる~

    オブジェクト倶楽部、コーディング規約の会の「C# コーディング標準」の駄目なところ - ぐるぐる〜から派生して、 「他の例外クラスを継承しただけの例外クラスを作らない」に不同意の理由 - Diary of Dary、 例外クラスの指針 - とC#について書くmatarilloの雑記や、さらには TwitterJava の検査例外と非検査例外についての議論へと発展したので例外についてまじめに考えてみた。 あくまで、今の自分の考えなので真に受けない方がいいかも!そもそも経験が少ないので、トンチンカンなことを言ってるかもしれません。 あ、それと、用語は基的に Java から取ってきています。ただ、メソッドじゃなくて関数を使っているけど、これに深い意味はありません。多分。 例外とは まず、例外とは一体何者なのか、ということ。 ここでは面倒を避けるために、Meyer 先生の定義を借りること

    例外について色々と考えてみた - ぐるぐる~
    Jxck
    Jxck 2016/09/06
  • ■ - 思い悩むblog 改め Buriに片思い日記

    契約的プログラミング、というものがあります。 その対義ではないですが、防衛的プログラミングというものもあります。 契約的プログラミングとは、プログラムを作る際にある程度の前提を置いて製造する事を言います。 簡単に例を挙げると、ファイルをオープンして中身を読み込み加工して別のファイルに出力する、という単純なプログラムを作る場合、オープンするファイルが存在する事、ファイルの中身が正しいフォーマットで記録されている事、出力先のファイルが既に存在していない事等を前提として、作るのが契約的プログラミングです。 防衛的プログラミングとは、これらの前提を一切信用しません。オープンするファイルがあるかどうか、記録されているフォーマットは正しいか、無事出力出来る状況が整っているか、などを検査する為の機能も合わせて、プログラムを作ります。 どちらが正しいかと簡単に答えを出せるものではありませんが、仮にバグが見

    ■ - 思い悩むblog 改め Buriに片思い日記
  • Error Objects, Domains, and Codes

    Error Objects, Domains, and CodesCocoa programs use NSError objects to convey information about runtime errors that users need to be informed about. In most cases, a program displays this error information in a dialog or sheet. But it may also interpret the information and either ask the user to attempt to recover from the error or attempt to correct the error on its own. The core attributes of an

  • 契約による設計の紹介 - Hatena Developer Blog

    こんにちは、チーフエンジニアの id:hakobe932 です。 はてなでは毎週、社内技術勉強会を開催しています。先週の勉強会では現在開催中のはてなインターン2016の参加者のみなさんもインターン生も参加して、いっしょに技術交流を行いました。 このエントリでは、そこで発表した、契約による設計の紹介をしたスライドを公開します。 契約による設計はBertrand Meyer氏によるオブジェクト指向入門*1という書籍で紹介されている考え方です。 オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング) 作者: バートランド・メイヤー,酒匂寛出版社/メーカー: 翔泳社発売日: 2007/01/10メディア: 単行(ソフトカバー)購入: 11人 クリック: 307回この商品を含むブログ (130件) を見る 契約による設計で

    契約による設計の紹介 - Hatena Developer Blog
    Jxck
    Jxck 2016/09/01
    先日の例外・エラー・異常の使い分けの話、契約違反(asset) も追加したいかもしれないなぁ。
  • 例外、エラー、異常、そして - Qiita

    「例外」「エラー」「異常」あたりの言葉が、言語仕様や設計の中で人によって微妙にずれた使い方されてるから、 「Expected だが Accept されないケース」を表す別の言葉が欲しい。 — Jxck (@Jxck_) 2016年8月31日 @Jxck_ 来こう分類されて、 1. Expected/Accepted 2. Expected/UnAccepted 3. UnExpected 2, 3 をどう呼ぶかあたりで、例外, エラー, 異常などの言葉が入り乱れてて、それが広義の例外処理が誤解される原因だと思ってる — Jxck (@Jxck_) 2016年8月31日 Expected and Accepted Expected but Unaccepted Unexpected

    例外、エラー、異常、そして - Qiita
    Jxck
    Jxck 2016/08/31
  • 続・Haskellの最近の例外ハンドリング - syocy’s diary

    前回 の記事ではHaskellの例外ハンドリングには exceptions パッケージを使えばいいのではないかと書いた。 ところが今年の6月に safe-exceptions という exceptions を拡張したようなパッケージがさる FPComplete から 発表 された。 そこでこの記事では safe-exceptions について調べてみる。 おそらくほぼ FPComplete の発表の受け売りになってしまうので英語を読める人は原文を読む方がいいかもしれない。 さすが FPComplete だけあってこれは既に LTS Haskell に入っている。 この記事では lts-6.14 を用いる。 Haskellの例外のつらいところ 自分が認識している範囲ではHaskellの例外まわりは以下のところがつらい。 標準の例外系の関数が IO に特化されていて取り回しが悪い いかにも純粋

    続・Haskellの最近の例外ハンドリング - syocy’s diary
  • JavaScriptエンジニアなら知ってるよね? エラー処理のいい書き方、悪い書き方

    JavaScriptのエラー処理、ちゃんと書いていますか? エラーを無視せず、どこに問題があるのか、きちんと確認できるコードの書き方をデモで紹介。 この記事はTim SeverienとMoritz Krögerが査読を担当しています。最良の記事を提供することができ、SitePointの査読担当者の皆さんに感謝します。 JavaScriptのエラー処理には危険が潜んでことを知っていますか? もしマーフィーの法則を信頼しているとしたら、不具合が生じる可能性が当に高いです! この記事では、JavaScriptのエラー処理について考え、その落とし穴から便利な実践例までを説明します。さらに最後には、非同期コードとAjaxにも触れます。 JavaScriptはイベント駆動型プログラムで、プログラミングをより豊かなものにしてくれます。ブラウザーをイベント駆動型プログラムと考えると、発生するエラーは同一

    JavaScriptエンジニアなら知ってるよね? エラー処理のいい書き方、悪い書き方
    Jxck
    Jxck 2016/08/18
    基礎の基礎的な話
  • What is Promise.try, and why does it matter? - joepie91's Ramblings

    A topic that frequently confuses users in the #Node.js channel, is the Promise.try method provided by Bluebird. People often struggle to understand what it is, or why they should use it - and this isn't helped by the fact that almost all guides to Promises fail to demonstrate its use. In this brief article, I hope to provide a better explanation of what Promise.try is, and why you should always us

    Jxck
    Jxck 2016/08/18
    Promise の中に入る前の同期例外処理を忘れないように、 中で try-catch して Promise で包んでくれる Promise.try (非標準)が便利だという話。
  • Java 歴 23 分の Ruby エンジニアが Effective Java を読んで感動した話 - scramble cadenza

    イントロ 例外処理を書くことはよくやっているのだけれど、その時の主軸となる考え方について、今までなんとなくで行っていた部分が多かった。 毎回考えるポイントは例えば以下のような疑問。 どこのレイヤーで、どこまで例外処理を行えばよいのだろうか? どの例外をキャッチし、どの例外を伝搬させればよいだろうか? 前提条件をチェックし、失敗した場合、例外を出したほうがよいか、nil, false を返すほうがよいか? 例外をどういう単位でラップさせるのが良いだろうか? 例外をチェインし過ぎると却って煩雑になる気がする。どうすれば良いのだろうか。 しかし、この辺りの話って、API の設計だったり、仕様の影響もあるので、都度対応が異なってしまうもの。 したがって抽象化して理解することが難しく感じた。 とてもよく使ってるし、とても大事な事なことなのに。 そんな今更な事で悩んでいた時に、Effective Ja

    Java 歴 23 分の Ruby エンジニアが Effective Java を読んで感動した話 - scramble cadenza
  • Node.js における Promise を使った例外処理 - from scratch

    さて、 Node.js のエラーハンドリングは難しいと言われてますが、 2016年現在、つまりNodeの v4 とか v6 が主流になり、 Promise が基的な処理として採用されている状況ではどうでしょうか。ちょっと考えてみます。 一応これの補足です。 qiita.com TL;DR 未だに難しい。ただし、 Promise で改善されている。async-await や zone まで来たらかなり楽になる。 あと、 unhandledRejection が uncaughtException よりも酷いことにならないので、大分マシになっている。 Node.js のエラーハンドリングの難しさ まず JavaScript には同期と非同期のエラーハンドリングのやり方があります。前者は所謂 try-catch による方法、後者は callback を使って第一引数で実現する方法や emit(

    Node.js における Promise を使った例外処理 - from scratch
  • Haskellの最近の例外ハンドリング - syocy’s diary

    どうもHaskellには標準のControl.Exceptionモジュールだけでなくmtlやexceptionsやexceptionalといった例外を扱うためのパッケージがあるらしいのだが、そのあたりのパッケージの選び方や使い方についてまとまった情報を見つけられなかった。 HaskellWiki例外のページも少々古いようで、deprecatedなものや統合される前のパッケージを書いていたりする。 調べた限り、mtlとexceptionsが今の主流っぽい。 その2つの使い方をまとめる。 なおバージョンはlts-6.1を基準としている。 mtl mtlパッケージのControl.Monad.ExceptモジュールはMonadErrorというモナドとExceptTというモナド変換子を提供する。 以下のように使う。 import Control.Monad.Trans(lift) import C

    Haskellの最近の例外ハンドリング - syocy’s diary
  • Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita

    はじめに Railsアプリケーションを格的に作り込んでいくと、「エラー」とは無縁ではいられません。 しょうもないバグでエラーが発生することもありますし、ほとんど不可抗力ともいえるような大規模なネットワーク障害でエラーが発生することもあります。 エラーの種類がなんであれ、エラーが起きた場合は「原因を素早く特定し、速やかに復旧させること」と「あるエラーが引き金になって、さらに大きなエラーに引き起こさないようにすること」が重要です。 エラー処理を適切に実装していれば、原因の特定や復旧もすばやくできますし、さらに大きなエラーを引き起こす可能性も少ないです。 また、ソースコードも比較的シンプルに保てます。 逆にエラー処理が不適切だと原因の特定に時間がかかったり、異常なデータがどんどん増えてさらに大きなエラーを引き起こしたりします。 ソースコードにも無駄に複雑な処理フローや条件分岐がたくさん出てきて

    Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita