こんにちは、CX事業本部 IoT事業部の若槻です。 今回は、JavaScript Testing FrameworkであるJestで、例外処理のテストを実装してみました。 やってみた Jestでは、.toThrow()というMactherが用意されており、これを使用して例外処理の評価を行うことができます。 .toThrow(error?) - Expect · Jest toThrowError()は.toThrow()のエイリアスです。クラス、エラーメッセージ、インスタンスオブジェクトなどを評価対象として指定できます。 example function drinkFlavor(flavor) { if (flavor == 'octopus') { throw new DisgustingFlavorError('yuck, octopus flavor'); } // Do some
はじめに Railsアプリケーションを本格的に作り込んでいくと、「エラー」とは無縁ではいられません。 しょうもないバグでエラーが発生することもありますし、ほとんど不可抗力ともいえるような大規模なネットワーク障害でエラーが発生することもあります。 エラーの種類がなんであれ、エラーが起きた場合は「原因を素早く特定し、速やかに復旧させること」と「あるエラーが引き金になって、さらに大きなエラーに引き起こさないようにすること」が重要です。 エラー処理を適切に実装していれば、原因の特定や復旧もすばやくできますし、さらに大きなエラーを引き起こす可能性も少ないです。 また、ソースコードも比較的シンプルに保てます。 逆にエラー処理が不適切だと原因の特定に時間がかかったり、異常なデータがどんどん増えてさらに大きなエラーを引き起こしたりします。 ソースコードにも無駄に複雑な処理フローや条件分岐がたくさん出てきて
こんにちは、CX事業本部 IoT事業部の若槻です。 今回は、静的型付け言語TypeScriptでAxiosのtry/catchでの例外オブジェクトを型付けする方法を確認してみました。 Axiosのtry/catchでの例外オブジェクトで型エラーが発生する AxiosでAPIエンドポイントなどへリクエストをする際に、Try/Catch構文でエラーをキャッチしたら、ステータスコードなどに応じた処理を実装したい場合があります。 import Axios from 'axios'; export const useGetData = async () => { try { const response = await Axios.get(`path/to/data`, { headers: { 'Content-Type': 'application/json', }, }); return re
非同期処理:Promise/Async Function この章ではJavaScriptの非同期処理について学んでいきます。 非同期処理はJavaScriptにおけるとても重要な概念です。 また、ブラウザやNode.jsなどのAPIには非同期処理でしか扱えないものもあるため、非同期処理を避けることはできません。 JavaScriptには非同期処理を扱うためのPromiseというビルトインオブジェクト、さらにはAsync Functionと呼ばれる構文的なサポートがあります。 この章では非同期処理とはどのようなものかという話から、非同期処理での例外処理、非同期処理の扱い方を見ていきます。 同期処理 多くのプログラミング言語にはコードの評価の仕方として、同期処理(sync)と非同期処理(async)という大きな分類があります。 今まで書いていたコードは同期処理と呼ばれているものです。 同期処理
PHPではエラー発生時も普通にレスポンスヘッダでステータス200を返しますが、それだと困るという場合もあるかと思います。 PHPの設定ディレクティブに auto_prepend_file という、全てのスクリプトが読み込まれる前に別のスクリプトを自動で差し込める機能がありますが、それを使って既存のコードに手を加えることなく、エラー発生時のステータスコードを変更する方法を紹介します。 auto_prepend_file ディレクティブは php.ini .htaccess httpd.conf .user.ini のどこでも設定できますが、今回の目的(HTTPからのアクセス時に発生したエラーのレスポンスステータスを変更)であれば所定のディレクトリ以下のみに限定した方がいいでしょう。 今回は普通に .htaccess で以下の定義を追加します。 説明のため単純に同一階層に設置していますが、実際
Every new feature added to the PHP runtime creates an exponential number of ways developers can use and abuse that new feature-set. However, it’s not until developers have had that chance that some agreed-upon good usage and bad usage cases start to emerge. Once they do emerge, we can finally start to classify them as best or worst practices. Exception handling in PHP is not a new feature by any s
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
@calpo22さんの記事 PyrusでプロジェクトローカルなPEARライブラリインストール : PHP Advent Calendar jp 2011 Day 10 – くろまほうさいきょうでんせつ にき続き、PHP Advent Calendar jp 2011 11日目の記事です。 皆さん、エラー処理ちゃんとやってますか? 今時は、設定を書いておけばフレームワークがよしなにやってくれるよ、という方が多いかもしれません。 PHP4時代を戦い抜いた人は、皆自分なりのエラー処理関数を書いてset_error_handler()とtrigger_error()を駆使した経験があると思います。 私も当時は、サブルーチンを呼ぶたびに戻り値をチェックして return FALSE をリレーしていき、レスポンス出力の段階でFALSEが返されていればエラー画面をinclude、といった処理をしてい
Hey folks, sorry for letting you guys wait so long, but here is my promised post on how to use Exceptions in CakePHP. Before you continue reading, be warned that you'll need PHP 5 as well as CakePHP 1.2 for this code to work properly. First of all. Why did I decide to experiment with exceptions in CakePHP? Well, Object::cakeError() does an ok job at providing me with a way to render some sort of i
php, CakePHPCakePHPで簡単に例外をハンドリングしたいな〜と思って検索したところ、Coreのdispatcher.phpに手を入れる以下の様な方法が数件引っかかった。(※以下2つはどちらも動作未確認) CakePHP 1.2 (line 227辺り) try { $output = $controller->dispatchMethod($params['action'], $params['pass']); } catch (Exception $e) { $this->log($e->getMessage()); ... } 1.3ではこんな感じになるかな。 CakePHP 1.3 (line 204辺り) try { $output = call_user_func_array(array(&$controller, $params['action']), $para
In this article we are going to learn about PHP Exceptions from ground up. These concepts are utilized in many large, scalable and object oriented applications and frameworks. Take advantage of this language feature to improve your skills as a web application developer. 1 An Example First Before we begin with all the explanations, I would like to show an example first. Let's say you want to calcul
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く