var a = document.getElementById('id');
var b = document.getElementsByClassName('p');

このようにドキュメント上に存在しない要素を取得するとき、documentを親として要素を取得する場合は特にエラーは表示されません。

var a = document.getElementById('id');
var b = a.getElementsByClassName('p');

ところが、このように親要素に#idがあってその中のp要素を取得したいとき、ChromeにてUncaught TypeError: Cannot read property 'getElementsByClassName' of nullと表示されます。
要素が見つからなかった場合は空の集合が返るのではないのでしょうか?

追記

たとえば、Webサイトのすべてのページに共通なJSとして

var a = document.getElementById('id');
var b = a.getElementsByClassName('p');

を読み込む場合、すべてのページに#id要素が存在するとは限りません。そのような場合は、b に代入する前に null かどうかをチェックしてから代入するといったような方法が普通でしょうか?普通はどのような方法が使われますか?