Javaでnullを受け付けないメソッドにnullを渡したらどうなるべきか - Togetter
Twitterのつぶやきマッシュアップメディア!
@togetter_jpをフォロー
マイページ
メニュー
設定
ログイン
トップ
ニュース
社会
地域
芸能・スポーツ
IT・Web
科学・教養
カルチャー
趣味
生活
仕事
ネタ・お笑い
ログ・日記
震災
311
生活保護
物資
なりきり
援助
プロレス
片山さつき
速報
国内
アジア
アメリカ
ヨーロッパ
その他
政治
経済
国際
法律
環境
コラム
東京
東京近郊
北海道
東北
関東
北陸・信越
東海
近畿
中国・四国
九州・沖縄
海外
芸能
テレビ
ラジオ
野球
サッカー
ゴルフ
格闘技
競馬
モータースポーツ
その他
Android
Apple
インターネット
パソコン
モバイル
ガジェット
サイト制作
プログラミング
その他
科学
テクノロジー
エネルギー
数学
物理
宇宙
自然
人文
建築
心理
その他
アニメ
ゲーム
マンガ
アイドル
映画
音楽
書籍
演劇
ファッション
社会学
カメラ
車・バイク
電車
旅行
釣り
歴史
アート
デザイン
動物
その他
ハウツー
レシピ
グルメ
恋愛
マネー
節約
健康・医療
教育
ペット
起業・ベンチャー
経営
マーケティング
会計・人事
法務
就職・転職
語学・資格
ネタ
お笑い
大喜利
画像・動画
やってみた
その他
ログ
日記
思い出
雑談
メモ
飲み会
議事録
イベント
セミナー
復興
原発
支援
政府
自治体
トップ
>
IT・Web
>
プログラミング
> Javaでnullを受け付けないメソッドにnu..
2011/11/20 11:40:51
IT・Web
プログラミング
編集可能
java
+
Javaでnullを受け付けないメソッドにnullを渡したらどうなるべきか
代表的な候補としては「IllegalArgumentException」と「NullPointerException」。
by
daisuke_m
3 fav
1277 view
Fav
3
お気に入りに登録ならここをクリック!
まとめ
メニューを開く
一括削除
事の起こり
今更commons-lang3を使い始めようとしている。
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:02:39
しかし重大な事実発覚。commons-langで俺が一番使っているValidate
#notNullの仕様が変わっとる
w IAEだったはずがNPEに変わっているではないかっ。…世の中そういう流れなのかな…。
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:04:44
Content from Twitter
そして問題提起してディスカッション
引数としてnullを受け付けないメソッドにnullを渡した時に飛ぶべきはNullPointerExceptionかIllegalArgumentExceptionか。って哲学っぺーよなw 俺は今までIAE派だったのだが。
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:09:49
@daisuke_m
NullPointerに一票。
返信する
RTする
ふぁぼる
megascus
2011/11/19 11:10:36
@megascus
まぁ哲学だから「そう思ったから」でも良いと思うのだけど、NPEを積極的に選ぶ理由ってあります?
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:12:03
@daisuke_m
そちらのほうが直感的だからですかね。汎用的な変な引数ですよりも、引数がNullです。のほうが後で利用するときに判りやすいとおもってます。
返信する
RTする
ふぁぼる
megascus
2011/11/19 11:13:26
@megascus
まぁ、確かに null っていう言葉の方が illegal ってのより具体的ですから、字面的には分かりやすいですね。
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:14:15
@daisuke_m
commonsつかわないならNullPointerExceptionであってほしい。commons使うならNullArgumentExceptionであってほしい
返信する
RTする
ふぁぼる
regtan
2011/11/19 11:12:01
@regtan
なるほどね。そういえばそんなのあったな的なw しかし、commons自身が Validate
#notNull
で NPE 投げてる事実をどう思いますかw
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:13:00
NullArgumentExceptionはIlegalArgumentException継承してんのか。
返信する
RTする
ふぁぼる
regtan
2011/11/19 11:13:22
@daisuke_m
3系からかわったのか・・・引数がNullか否かだから引数が不正というわけじゃないんだよなぁ。NPEが文脈にあってるきがする。NPEに変わってしまったら以前のIAEに違和感感じる。
返信する
RTする
ふぁぼる
regtan
2011/11/19 11:18:05
@daisuke_m
なるほど。そうであればパラメータ不正としてIAEでいいとおもうなぁ
返信する
RTする
ふぁぼる
regtan
2011/11/19 11:23:40
@regtan
と、いう気持ち(nullを受け付けないメソッドに引数として渡したnullは、不正な引数である)で今までIAE飛ばして来たんだけど、lang3のValidateに罠があったイマココ。
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:24:37
@daisuke_m
僕のイメージ的にNPEはnull参照しちゃった例外、IAEはその引数はアカンよ例外なのでIAEの感覚あります。
返信する
RTする
ふぁぼる
kamekoopa
2011/11/19 11:18:03
@daisuke_m
AssertionError まぁ、実際に使うことはないと思うけど...
返信する
RTする
ふぁぼる
skrb
2011/11/19 11:16:12
@skrb
うーん、引数チェックでAssertionError飛ばしていいのはprivate or default限定かなー、と思いました。
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:17:37
俺がNPEではなくIAEを選択した理由はNPEはコード上でthrowしなくても飛ぶものだから。null参照にメッセージを送ってしまったのか、明示的にthrowされたのかがぱっと見分からないから。IAEに統一しておくと、NPEが飛んだときはnull参照にメッセージしたと確定できる。
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:16:33
assertionって「ここはこうなる訳が無い」という、まさに "表明” なんすよね。だから、コード書いた人本人は「ミスでもない限り絶対起こらない」と思ってる。
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:18:49
@daisuke_m
ミスというか、将来別の個所を変更する際にそうあってはならないという前提をコード内に埋めてる感じだなぁ
返信する
RTする
ふぁぼる
ashigeru
2011/11/19 11:24:46
@ashigeru
なるほどね。俺の想定した「ミス」はそれも含んでるイメージだった。変更ミス。元々の設計意図を汲み取れなかったミス。ってミス連呼するとやだなw
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:26:35
@daisuke_m
実際には、IAEを使うことが多いです。もしくは、アプリケーションによるのですが、nullでもなんとなく動いてしまうようにするという設計にする場合もあります。GUIとかはnullでも動くように作ってしまうことが多いです。
返信する
RTする
ふぁぼる
skrb
2011/11/19 11:23:45
@skrb
なるほど。自分は結構fail-fast寄りなので、執拗にチェックして想定外をぶっとばす傾向にありますw
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:28:01
1) commons-lang2系に甘んじる、 2) lang3に移行してNPE派に改宗する、 3) Validateの利用を諦めて自作のチェックロジックを作る …瀬戸際だなぁw
返信する
RTする
ふぁぼる
daisuke_m
2011/11/19 11:38:27
Content from Twitter
残りを読む(14)
ブログへ
iframe版
拡張版
張付けプレビュー
Fav
3
あわせて読みたい
Java の参照と C++ の参照
バスで好みの男子に出あったときに知り合いになるメソッド
2010/08/06_わかる!JavaVM ― 2時間でわかる?JavaVM入門
JavaConverters とか
#Java屋が懐かしく感じる単語 まとめ
powered by Preferred Infrastructure
コメント
コメントを入力してください。
Twitterにも投稿する
みんなのおすすめ商品
商品を編集
おすすめ商品を登録する
設定を変更する
まとめを作成する
プロフィール
フォローする
Jiemamy(地豆)プロジェクトリーダ / Java / オブジェクト指向 / ドメイン駆動設計(DDD) / 機械学習 Apache Mahout / Scala・Haskellに興味あるが、まだ勉強してない
daisuke_m
link
twitter
rss
java
アップデート
まとめ
4
20
Javaでnullを受け付けないメソッドにnullを渡し..
0
variantという単語から派生した色々な単語の整理
0
各種炭水化物定食あれこれ
お気に入り
7
コメント
3
新着のまとめ
【Week 21/May.26, 2012】T..
new
2012.5.27大分プロレスAMW 「ハウ..
new
「東京タワー」は赤くて小さいお兄さん。「東京ス..
new
本日が誕生日/命日の音楽関係者(5月28日分)..
new
まとめ「Smartphone App Hack..
new
もっと見る
@togetter_jp
最近追加された商品
MS IN ACTION !! ガンタンクRX-75
HGUC 1/144 RGM-79 ジム (機動戦士ガンダム)
路上からできる生活保護申請ガイド 改訂版
HGUC 1/144 RGM-79N ジムカスタム (機動戦士ガンダム0083 STARDUS..
バカの理由(わけ) (役立つ初期仏教法話12)
オススメ
マイスター
トゥギャ通
埼玉南部の奴らがみた変な虹の写真まとめ
up
瓦礫処分の現状を知って下さい:宮城県石巻市(2..
「放射能汚染地域に住む人の血って、ほしいですか..
up
昭和初期の『格差』について
金環日食の写真を加工して遊んでたら収集つかない..
発達障害児を育てる幸せ満タン親バカなツイート集
new
もっと見る
明治大正昭和初期の農民の理想と現実
new
佐々木俊尚さんのstudygiht関連ツイート..
new
NHK あさイチ 「どうする?被災地ガレキの広..
new
NNNドキュメント’12 「医療被曝~過剰投与..
new
茂木健一郎(@kenichiromogi)さん..
new
深夜の東大生を中心に発生した「たのしい人生」TL
new
もっと見る
第80回「日食写真と昭和格差」
号外「みんなの金環日食まとめ―画像から教養ま..
第79回「虚構新聞とJリーグ」
第78回「コンプガチャとIT系かあちゃん」
第77回「びろーんと自宅警備隊」
第76回「Appleとパンツクッキー」
もっと見る
コメント