Which version of Chrome are you using? On the dev channel, and I think
the beta channel, the behaviour is:

It doesn't actually throw an exception when the bookmark doesn't
exist.  It sets a flag which indicates that the call couldn't return a
bookmark (chrome.extension.lastError).  This is consistent with most
of the other APIs (for instance, all of the chrome.tabs and
chrome.windows APIs).  The callback is called whether or not the
bookmark could be found, and you should check for that flag to see
whether or not the bookmark could be found.  You don't need to catch
an exception, because the execution of chrome.bookmarks.get is
asynchronous.

The way it currently works:

chrome.bookmarks.get(folderID, function(bookmarks) { if
(chrome.extension.lastError) { console.log("Not found"); } else {
console.log(bookmarks); }});

The way you're proposing:

chrome.bookmarks.get(folderID, function(bookmarks) { if (bookmarks ==
[]) { console.log("Not found"); } else { console.log(bookmarks); }});

They're basically the same, except checking chrome.extension.lastError
is more general purpose (can be mirrored in other APIs), whereas
returning an empty array is more specific to this use.  I agree that
perhaps if the extension couldn't find any bookmarks with that ID, it
would maybe be convenient if it returned an empty array as the
argument to the callback, as well as setting
chrome.extension.lastError, but that would simply be a convenience.

On Wed, Dec 30, 2009 at 3:02 AM, rich <atkins...@gmail.com> wrote:
> Well that works so far in that the presence of an uncaught Exception
> indicates the bookmark doesn't exist.
>
> However there is still an uncaught exception. If this is the best way
> to use the API then clearly the API is rubbish.
>
> Wouldn't it be better if an array of BookmarkTreeNodes was passed to
> the callback function, like this: function(array of BookmarkTreeNode
> results) {...});
>
> If there are no results, then the array is empty.
>
> (This is how chrome.bookmarks.search works)
>
> thoughts?
>
>
>
> On Dec 30, 1:17 pm, Daniel Wagner-Hall <dawag...@gmail.com> wrote:
>> Are you looking for a specific bookmark by ID? Something along the lines of:
>>
>> chrome.bookmarks.get(folderID, function(foo) { if
>> (chrome.extension.lastError) { console.log("Not found"); } else {
>> console.log("Found"); }});
>>
>> may work...
>>
>>
>>
>> On Wed, Dec 30, 2009 at 1:08 AM, rich <atkins...@gmail.com> wrote:
>> > bump!
>>
>> > On Dec 29, 6:54 am, rich <atkins...@gmail.com> wrote:
>> >> What is the recommended way to test for existence of a
>> >> BookmarkTreeNode that doesn't have a URL (i.e. a folder)?
>>
>> >> chrome.bookmarks.search does not work for non-URL bookmarks (always
>> >> returns false)
>>
>> >> The following code is fugly, and doesn't work:
>>
>> >> try {
>> >>         chrome.bookmarks.get(folderID, 
>> >> function(){console.log('found')});} catch(e) {
>>
>> >>         console.log('not found');
>>
>> >> }
>>
>> >> So, what is the recommended way to test for existence of a
>> >> BookmarkTreeNode that doesn't have a URL (i.e. a folder)?
>>
>> >> - rich
>>
>> > --
>>
>> > You received this message because you are subscribed to the Google Groups 
>> > "Chromium-extensions" group.
>> > To post to this group, send email to chromium-extensi...@googlegroups.com.
>> > To unsubscribe from this group, send email to 
>> > chromium-extensions+unsubscr...@googlegroups.com.
>> > For more options, visit this group 
>> > athttp://groups.google.com/group/chromium-extensions?hl=en.
>
> --
>
> You received this message because you are subscribed to the Google Groups 
> "Chromium-extensions" group.
> To post to this group, send email to chromium-extensi...@googlegroups.com.
> To unsubscribe from this group, send email to 
> chromium-extensions+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/chromium-extensions?hl=en.
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"Chromium-extensions" group.
To post to this group, send email to chromium-extensi...@googlegroups.com.
To unsubscribe from this group, send email to 
chromium-extensions+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/chromium-extensions?hl=en.


Reply via email to