I'm using Chromium 4.0.284.0 (35300) Ubuntu I can punch the following code into the JavaScript console (of an extension background page where bookmarks are permitted):
chrome.bookmarks.get('2323232', function(foo) { if (chrome.extension.lastError) { console.log("Not found"); } else { console.log("Found"); }}); ....and it definitely throws an exception (in red): > (X) Error during bookmarks.get: Can't find bookmark for id. ... and the little error count in the bottom right goes up by one. What I propose is more like: chrome.bookmarks.get(folderID, function(bookmarks) { if (bookmarks) { //do something useful } }); Which is easy to read and therefore more than just a convenience, IMHO. - rich On Dec 30, 3:39 pm, Daniel Wagner-Hall <dawag...@gmail.com> wrote: > 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 > > 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.